我已经定义了这个@IntDef
public static final int LINE = 0;
public static final int CORNER = 1;
@IntDef({LINE, CORNER})
@Retention(RetentionPolicy.SOURCE)
public @interface ShapeTypes {}
并将其分配给我的一个类成员
public @ShapeTypes int shapeType;
如果我没记错的话,它曾经有效,但现在,在 Android Studio 3.1.2 中,我可以做这样的事情
myClassObj.shapeType = 99;
它不应该导致编译和/或运行时错误吗?有没有办法可以为变量定义允许值的范围?
更新 似乎所有注释都不再有用了。
@IntRange(from = 4, to = 18)
public int size;
不会影响语句size = 20;
我错过了什么吗?有些设置可以打开注释吗?
答案 0 :(得分:2)
我在Android Studio 3.1.2中遇到同样的问题。但是我的一位同事在3.1.0中对它进行了测试,似乎它正在使用该版本。
答案 1 :(得分:-1)
IntDef
视为enum
,因此您无法在以后初始化。您已手动声明。
@IntDef({ShapeTypes.SHAPETYPE})
@Retention(RetentionPolicy.SOURCE)
@interface ShapeTypes {
int SHAPETYPE= 0;
}
有关详细信息,请查看this