,AccessLevel.PACKAGE와 AccessLevel.MODULE의 차이점은 무엇입니까? 롬복
@Getter(AccessLevel.PACKAGE)
private int country;
및
@Getter(AccessLevel.MODULE)
private int country;
간의 실제 차이는 무엇입니까?
,AccessLevel.PACKAGE와 AccessLevel.MODULE의 차이점은 무엇입니까? 롬복
@Getter(AccessLevel.PACKAGE)
private int country;
및
@Getter(AccessLevel.MODULE)
private int country;
간의 실제 차이는 무엇입니까?
그 은입니다. 나는 몇 가지 테스트 방법에 대한 몇 가지 세터를 만드는 시도하고 내가 가진 모든 (디 컴파일)되었다
for Module AccessLevel:
void setTestModule(Integer testModule) {
this.testModule = testModule;
}
for Package AccessLevel:
void setTestPackage(Integer testPackage) {
this.testPackage = testPackage;
}
그래서, 첫번째보기에 아무 차이가없는 것으로 보인다. 그래서, 소스 코드에보고 내가 확인할 수있는 모든 시간을 위해 그들이 (소스 here에서) 동일하게 처리되고 있다는 것입니다 :
lombok.javac.handlers.JavacHandlerUtil.toJavacModifier (ACCESSLEVEL ACCESSLEVEL) 또는 lombok.eclipse.handlers.EclipseHandlerUtil.toEclipseModifier (ACCESSLEVEL ACCESSLEVEL)
/**
* Turns an {@code AccessLevel} instance into the flag bit used by javac.
*/
public static int toJavacModifier(AccessLevel accessLevel) {
switch (accessLevel) {
case MODULE:
case PACKAGE:
return 0;
default:
case PUBLIC:
return Flags.PUBLIC;
case NONE:
case PRIVATE:
return Flags.PRIVATE;
case PROTECTED:
return Flags.PROTECTED;
}
}
은 아마 자바 9가에 대한 몇 가지 미래의 일이 될 것이라고 생각하지만, 지금은 동일하게 나타납니다.
JDK9에 대해서는 생각하지 않았습니다. 아마 진행중입니다! 아무도 다른 계획이나 로드맵을 가지고 오지 않으면 큰 대답을 받아 들일 것입니다. 감사합니다. –
@JadeDezo AFAIK'AccessLevel.MODULE'은 매우 초기에 존재하며 Java 9 모듈을 예상하고있었습니다. 수년 전, 모듈을 일종의 수퍼 패키지로 기대 했으므로 아마도 Lombok 저자가 그랬을 것입니다. AFAIK, 이것은 Java 9의 경우가 아니며 아마도 Flags.MODULE과 같은 것이 없을 것입니다. – maaartinus
설명해 주셔서 감사합니다. –
패키지 (예 : 폴더) 용 패키지. 모듈은 Java 9 모듈 용입니다. –