2017-11-16 4 views

답변

5

입니다. 나는 몇 가지 테스트 방법에 대한 몇 가지 세터를 만드는 시도하고 내가 가진 모든 (디 컴파일)되었다

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가에 대한 몇 가지 미래의 일이 될 것이라고 생각하지만, 지금은 동일하게 나타납니다.

+1

JDK9에 대해서는 생각하지 않았습니다. 아마 진행중입니다! 아무도 다른 계획이나 로드맵을 가지고 오지 않으면 큰 대답을 받아 들일 것입니다. 감사합니다. –

+1

@JadeDezo AFAIK'AccessLevel.MODULE'은 매우 초기에 존재하며 Java 9 모듈을 예상하고있었습니다. 수년 전, 모듈을 일종의 수퍼 패키지로 기대 했으므로 아마도 Lombok 저자가 그랬을 것입니다. AFAIK, 이것은 Java 9의 경우가 아니며 아마도 Flags.MODULE과 같은 것이 없을 것입니다. – maaartinus

+0

설명해 주셔서 감사합니다. –