반응형
열거 형에 패키지 전용 생성자가있는 이유는 무엇입니까?
열거 형 생성자는 상수에 의해서만 호출 될 수 있기 때문에 왜 패키지 전용이 될 수 있습니까?
생성자는 실제로 패키지 전용 이 아닙니다. 키워드를 추가하지 않더라도 private
인터페이스 메서드가 암시 적으로 암시 적으로 사용 되는 방식 public
입니다.
JLS ( §8.8.3 ) 의 관련 섹션은 다음과 같이 설명합니다.
일반 클래스의 생성자에 대한 액세스 수정자가 지정되지 않은 경우 생성자는 기본 액세스 권한을 갖습니다.
열거 형 유형의 생성자에 대한 액세스 수정자가 지정되지 않은 경우 생성자는
private
입니다.enum 형식 (§8.9)의 생성자가 선언
public
되거나protected
.
이것은 언어의 특징입니다. 열거 형 생성자는 암시 적으로 비공개입니다.
흥미롭게도 다음과 같이 패키지 표시 열거 형 생성자를 선언하면 다음과 같습니다.
public enum MyEnum {
A(0),
B(1);
private final int i;
MyEnum(int i) {
this.i = i;
}
public int getI() {
return i;
}
}
패키지의 다른 클래스에서 참조 할 수 없습니다. 시도하면 컴파일러 오류가 발생합니다.
MyEnum 유형을 인스턴스화 할 수 없습니다.
참조 URL : https://stackoverflow.com/questions/7747948/why-can-a-enum-have-a-package-private-constructor
반응형
'IT story' 카테고리의 다른 글
Razor actionlink 자동 생성? length = 7 in URL? (0) | 2021.01.07 |
---|---|
정규식, 여러 줄을 일치시키는 방법? (0) | 2021.01.07 |
프록시 함수를 통해 console.log에 첫 번째 클래스 인수로 인수 전달 (0) | 2021.01.07 |
Android OpenGL 텍스처 압축 (0) | 2021.01.07 |
SAPI 란 무엇이며 언제 사용합니까? (0) | 2021.01.07 |