BLOG main image
분류 전체보기 (42)
잡담 (6)
활용 (17)
language (3)
project (14)
design (2)
자료정리 (0)
결혼 준비 (0)
30 acai berry research
30 acai berry research
best dating sites
best dating sites
Ford Mustang
Ford Mustang
Nissan Altima
Nissan Altima
traders insurance policy
traders insurance policy
103,516 Visitors up to today!
Today 505 hit, Yesterday 781 hit
daisy rss
tistory 티스토리 가입하기!
2013/03/08 13:11

아래 코드의 문제점을 명확하게 말할 수 있는가? 그렇지 않다면 필자 처럼 자바의 inner class 에 대한 이해가 떨어졌던 것 일 수도 있다.

class Factory {
    private int a;
    public class B {
    }

    public static B makeB() {
        return new B(); // 문제 코드
    }
}

이 코드는 팩토리 메소드 패턴을 구현하다가 문법에러를 만나는 코드이다.

필자는 코드를 작성하면서 B b = Fastory.makeB(); 따위의 코드를 상상 했었다.근데 이 코드에는 문제점이 있었고 컴파일 되지 않았다. 왜일까? static한 팩토리 메소드에서 static 하지 않은 클래스B 를 생성하려고 하기 때문이다.

살펴보면 당연한 문제인데 inner class 를 그냥 일반 클래스로 생각했으면 원인을 모를 문제이다.
자바는 nested 된 innerClass 는 자신을 포함(nest)한 클래스의 멤버 변수에 접근 가능하다. 따라서 netsted 된 클래스는 nest 한 클래스의 인스턴스에 접근 가능해야 한다.

이제 위의 코드를 다시 보면 문제점이 보일 것 이다. makeB 로 생성된 b instance 에서 variable a 는 어떤 instance 의 a 인가? 모른다. 따라서 compile 타임 에러인 것이다.

그렇다면 어던 해결 책이 있는가? 세가지 방법이 있다.

첫번째는 모두 static 하게 만드는 것이다. static 한 메소드에 static 한 변수 static 한 factory 로 만든다. 이러면 모두 static 하므로 instance 가 필요하지 않다.

두번째 방법은 factory method 객체를 Singleton 으로 만들어서 하나는 이미 존재하게 만드는 것이다.

세번째 방법은 외부에서 생성한 인스턴스를 명시적으로 지정해서 inner class 를 만드는 방법이다. 자바치고 좀 해괴한 문법이 나온다.
factory = new Factory();
factory.new B();

필자는 코드상에 좀 변칙적인 싱글톤이 이미 구현되어 있었으므로 두번째 방법을 따라서 코드를 정리했다.


Trackback Address :: http://beonit2.tistory.com/trackback/67 관련글 쓰기
Tracked from http://www.promedia.ba | 2014/09/10 23:59 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from en.wikipedia.org | 2014/09/21 19:17 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from business.easyprofitsreview.com | 2014/09/23 20:11 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from http://login.lpntorn101.com  / | 2014/09/23 20:16 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from click through the up coming webpage | 2014/09/23 21:07 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from members.darkspotsonfaceinfo.com | 2014/09/23 21:27 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from http://reports.elvissightingbulletinboard.com | 2014/09/23 21:53 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from articles.scfenghe.com | 2014/09/23 21:57 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from web design company | 2014/09/23 22:14 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from http://members.scfenghe.com | 2014/09/23 22:26 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from support.gsacampaigns.com | 2014/09/23 22:47 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from connect.encinocouncil.org | 2014/09/23 23:02 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from http://business.avalanchexreview.net | 2014/09/23 23:17 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from http://members.easyprofitsreview.com  / | 2014/09/23 23:32 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from clairehunterphotography.com | 2014/09/23 23:34 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from http://support.thebigartexperience.com | 2014/09/23 23:40 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from purchase.stretchmarkscream101.com | 2014/09/23 23:42 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from http://support.scfenghe.com | 2014/09/23 23:45 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from http://clients.lpntorn101.com  / | 2014/09/23 23:51 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from help.ganapatioccult.com | 2014/09/23 23:52 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from secrets.trafficbackdoorreview.net | 2014/09/23 23:53 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from http://helpdesk.authorityspyreview.net | 2014/09/24 00:04 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from http://login.gsacampaigns.com | 2014/09/24 00:37 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from clients.danielwestenterprises.com | 2014/09/24 01:02 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from sightings.elvissightingbulletinboard.com | 2014/09/24 01:07 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from contact.gsacampaigns.com | 2014/09/24 01:18 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from elvissightingbulletinboard.com | 2014/09/24 01:18 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from http://helpdesk.silvercentral.net | 2014/09/24 01:21 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from http://members.ganapatioccult.com | 2014/09/24 01:23 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from members.thebigartexperience.com | 2014/09/24 01:26 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from business.authorityspyreview.net | 2014/09/24 01:53 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from assist.ezcashcreatorreview.com | 2014/09/24 02:14 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from support.darkspotsonfaceinfo.com | 2014/09/24 02:15 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from clients.a1-article.com | 2014/09/24 02:29 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from ultimatecopywritingsecrets.com | 2014/09/24 02:50 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from members.a1-article.com | 2014/09/24 03:13 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from Get England and Scotland facts on Wikipedia | 2014/09/26 17:01 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from spin rewriter 5 bonus | 2014/10/07 09:18 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from keyword xp v3 | 2014/10/07 21:58 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from mcafee coupon | 2014/10/08 16:34 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from free coupons | 2014/10/09 02:31 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from Diet plans For women | 2014/10/11 00:24 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from play casino | 2014/10/14 05:32 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from UberStrike Cheats | 2014/10/14 15:40 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from Diet Plans for Women | 2014/10/15 19:06 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from cinnamon leaf essential oil | 2014/10/15 21:16 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from Diet Plans to Lose Weight | 2014/10/20 02:59 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from coconut oil for hair | 2014/10/20 15:04 | DEL
바람이 불 때 - java nested class 의 특성
Tracked from Diet Plans to Lose Weight | 2014/10/20 18:26 | DEL
바람이 불 때 - java nested class 의 특성
Name
Password
Homepage
Secret
prev"" #1 #2 #3 #4 #5 ... #42 next

티스토리 툴바