@ annotations不再工作了

时间:2018-05-23 09:55:34

标签: android android-studio

我已经定义了这个@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;

我错过了什么吗?有些设置可以打开注释吗?

2 个答案:

答案 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