2013-08-21 2 views
0

Java로 컴포지션을 구현할 수 있습니까? 클래스 A를 만들고이 클래스의 인스턴스를 클래스 B에서 사용하면 A가 독립 객체를 단독으로 만들 수 없다는 것을 어떻게 보장 할 수 있습니까?자바 코드 작성

+0

을 B에서로드 여부를 결정하기 위해 클래스 로더를 사용할 수 있습니다 내부 클래스를 사용하는 경우를 제외하고는 Java로 컴포지션을 구현할 수 없습니다 (이는 너무 명백합니다). 따라서 제 3 자 클래스는 결코 합성물로 포함될 수 없습니다. –

+0

"독립 개체를 만들 수 없습니다"라는 타사 클래스가있는 경우 어떻게 구성하여 사용할 수 있습니까? –

+0

@AmitKhanna : 물론 제 3 자 클래스의 객체를 만들 수 있습니다. 난 그저 제 3 자 클래스가 결코 합성물로 사용될 수 없다는 것을 확인하기를 원한다. –

답변

2

나는 그것이 가능하지 않다고 생각한다. 유일한 유사 솔루션은 A를 B의 개인 내부 클래스로 생성하는 것입니다. 그러면 B가 아닌 다른 누구도 A를 인스턴스화 할 수 없습니다.

1

컨테이너 클래스의 내부 클래스로 작성한 클래스를 가질 수 있습니다.

class ContainerClass{ 

    class ContainedClass1{ 

    } 

    class ContainedClass2{ 

    } 

} 

ContainerClass의 인스턴스에 연결되어 동일한 인스턴스없이 생성 할 수 없습니다 이쪽으로. 클래스를 비공개로 설정할 수 있습니다. 그러면 클래스 내에 만 생성 할 수 있습니다.

+0

수 있습니다 정교한 또는 비유적인 예제를 제공하십시오. –

+0

@qualtar 기본적으로 허용되는 대답과 동일한 대답입니다. –

0

정확하게 질문하는 것으로 이해하면 내부 클래스가 필요합니다. 본질적으로 내부 클래스를 만들려면 클래스 B 안에 클래스 A를 작성하십시오.

0

클래스 A를 B의 정적 내부 클래스로 만들고 A의 생성자를 private로 유지할 수 있습니다. 그러면 B만이 생성자를 사용할 수 있습니다. 참조

일부 링크 :

scope of private constructor in Nested Class

0

아마 당신은 클래스는 내가 안전하게 있다는 결론을 내릴 수 무엇입니까 회신에 따라 너무