열거 형 생성자는 상수로만 호출 할 수 있으므로 패키지 개인용으로 허용되는 이유는 무엇입니까?열거 형에 패키지 전용 생성자가있는 이유는 무엇입니까?
답변
실제로 생성자가 package-private가 아닙니다. 암시 적으로 private
인터페이스 방법은 암시 적으로 public
입니다. 키워드를 추가하지 않은 경우에도 마찬가지입니다.
JLS (§8.8.3)의 관련 섹션 상태 :
If no access modifier is specified for the constructor of a normal class, the constructor has default access.
If no access modifier is specified for the constructor of an enum type, the constructor is
private
.It is a compile-time error if the constructor of an enum type (§8.9) is declared
public
orprotected
.
인용문 : http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.8.3 –
@ 라이언 스튜어트 : 찾아 주셔서 감사합니다. – ColinD
그것은 언어의 특질 : 열거 생성자는 암시 적으로 개인 있습니다.
흥미롭게도,이 같은 패키지 보이는 열거 생성자 선언하는 경우 : 패키지에 다른 클래스에서 참조 할 수 없습니다
public enum MyEnum {
A(0),
B(1);
private final int i;
MyEnum(int i) {
this.i = i;
}
public int getI() {
return i;
}
}
합니다.
Cannot instantiate the type MyEnum
분명히 정적 인 중첩 클래스 인 열거 형이나 열거 형의 메서드로 이것을 시도 할 수 있습니다. 예, 오류가 발생하면 컴파일이 실패합니다. – Vlasec
"패키지로 표시되는 enum 생성자를 선언하면"...하지만 실제로는 그렇게 할 방법이 없습니다. – raghavsood33
@ raghavsood33 예. 할 수 있습니다. 패키지에 표시되는 생성자를 보여주는 내 대답에 추가 할 수있는 컴파일 가능한 코드를 참조하십시오. – Bohemian
- 1. 열거 형에 typedef가 사용되는 이유는 무엇입니까?
- 2. "&"열거 형에?
- 3. DropDownList를 열거 형에 바인딩
- 4. 기본 형식을 열거 형에 typedef해야합니까?
- 5. C에서 열거 형에 값을 지정하는 방법은 무엇입니까?
- 6. 열거 형에 값 할당
- 7. 열거 형에 NSComboBox 바인딩?
- 8. Silverlight - 열거 형에 바인딩
- 9. 열거 형에 저장된 참조를 유지하는 방법은 무엇입니까?
- 10. 열거 형에 'Value'가 있어야 할 일은 무엇입니까?
- 11. 한 열거 형의 요소를 다른 열거 형에 매핑하는 방법은 무엇입니까?
- 12. WPF ComboBox 열거 형에 바인딩
- 13. 열거 형에 Serializable 특성이 필요합니까?
- 14. 다음 구문이 열거 형에 맞습니까?
- 15. {,}, (,)를 열거 형에 넣는 방법
- 16. 마지막 항목이 열거 형에 누락되었습니다.
- 17. 서식 파일의 열거 형에 대한 Foreach 형식
- 18. 플래그 열거 형에 대한 이진 연산
- 19. String 클래스에 복사 생성자가있는 이유는 무엇입니까?
- 20. std :: function 인스턴스에 기본 생성자가있는 이유는 무엇입니까?
- 21. 면도칼에서 열거 형에 대해 열거 형 값 확인을 렌더링하는 방법
- 22. 마스터 페이지의 열거 형에 액세스하는 방법
- 23. 열거 형에 "typein typeinfo"오류가 발생합니다.
- 24. CustomControl DependencyProperty를 ViewModel 열거 형에 바인딩
- 25. 열거 형에 대한 저지 xml 주석
- 26. C#의 열거 형에 예약 된 키워드
- 27. '&'로 열거 형에 값을 만드는 방법
- 28. 공개적으로 표시되는 유형 열거 형에 어떻게 댓글을니까?
- 29. COM 개체의 열거 형에 액세스 [jscript]
- 30. Acceleo로 열거 형에 대한 정의되지 않은 테스트
이 (인터페이스는 모든 메소드 전에'공공 abstract' 필요하지 않습니다 같은) 코드 공간에 비트를 저장하고 불필요한 상세를 방지 할 수 있도록 –
@ratchetfreak : 당신이하려고하면 컴파일러 오류가 그것입니다 인터페이스가 아닙니다. 인터페이스 메소드는 * 항상 *'public abstract'입니다. 수식어를 명시 적으로하는 것은 허가되고 있습니다 만, 변경할 수는 없습니다. –
@RyanStewart 열거 형 생성자를 직접 호출하여 논리적으로 비공개가되고 패키지 전용으로 소수의 문자를 저장할 수있는 방법이 없습니다 –