AccessLevel.PACKAGE 和 AccessLevel.MODULE 之间有什么区别?
在龙目岛,实际区别是什么
@Getter(AccessLevel.PACKAGE)
private int country;
和
@Getter(AccessLevel.MODULE)
private int country;
?
在龙目岛,实际区别是什么
@Getter(AccessLevel.PACKAGE)
private int country;
和
@Getter(AccessLevel.MODULE)
private int country;
?
这是一个好问题。我尝试为一些测试方法创建一些 setter,我得到的只是(反编译):
for Module AccessLevel:
void setTestModule(Integer testModule) {
this.testModule = testModule;
}
for Package AccessLevel:
void setTestPackage(Integer testPackage) {
this.testPackage = testPackage;
}
因此,乍一看似乎没有区别。因此,我查看了源代码,我所能验证的是,目前它们的处理方式相同(来自此处的源代码):
lombok.javac.handlers.JavacHandlerUtil.toJavacModifier(AccessLevel accessLevel) or 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;
}
}
我认为Java 9的未来可能会有一些工作,但现在它似乎是一样的。