2013-06-23 3 views
2

중첩 클래스에 public 생성자가있는 곳을 많이 보았습니다. 질문은 왜 필요합니까?/언제 필요합니까? private 생성자도 같은 일을하는 것처럼 보입니다. 그래서 내부/중첩 클래스에 private 생성자가 필요한 컨벤션을 사용하지 않는 이유는 무엇입니까?중첩 클래스에서 공용 생성자를 사용하는 것은 무엇입니까

개체 외부에 내부 클래스를 만들 필요가 없다면 내부 클래스 생성자를 private로 선언하는 것이 옳은가요? 그렇다면 자바 맵에서 Entry가 생성자를 비공개로 선언하지 않는 이유는 무엇입니까?

감사합니다.

+1

'java.awt.geom.Point2D.Double'을 참조하십시오. 그것은 public 생성자와 중첩 된 클래스입니다, 그렇죠? 생성자가 private 인 경우 클래스를 사용할 수 없습니다. – johnchen902

+0

내 대답에 행복합니까? 그렇다면 그것을 받아 들여야합니다. – Nicholas

답변

4

그런 다음 다른 곳에서 내부 클래스를 인스턴스화 할 수 없습니다. 빌더의 생성자가 개인 인 경우, 복잡한 가진 개체를 만들 때 어떤 위에 매우 유용 할 수 없을 것

House house = new House.Builder().addRoof().paint(Color.WHITE).build(); 

: 내부 클래스를 인스턴스화 할 수 있다는 무겁게 빌더 패턴에 사용되는 상태.

관련 문제