我在我的代码中使用Android支持注释中的IntDef(但我的问题更加广泛,请继续阅读):
public class UiLockMode
{
@IntDef({DEFAULT, NONE, VISIBLE, TRANSPARENT})
@Retention(RetentionPolicy.SOURCE)
public @interface AllowedValues {}
public static final int DEFAULT = 0;
public static final int NONE = 1;
public static final int VISIBLE = 2;
public static final int TRANSPARENT = 3;
}
接下来,我得到了一些用它进行注释的其他方法,如下所示:
protected void setLockMode(@UiLockMode.AllowedValues int lockMode) {
...
这时候一切都很好,但问题出现在当我想要将其他方法的返回值传递给setLockMode()
时,比如从Parcelable实现中:
private Foo(Parcel in) {
...
setLockMode(in.getInt());
在这种情况下,我的IDE会抱怨我只能使用DEFAULT、NONE、VISIBLE、TRANSPARENT
与setLockMode()
。但是getInt()
不是我的方法,因此我无法注释其返回值并使所有内容顺畅。我几乎确定这不是唯一的用例,但我找不到临时禁用AllowedValues
注释在此处发出警告或者"转换"从getInt()
返回值的方法来使AllowedValue
不再报错的方法。所以我的问题是:是否有解决此问题的方法?也许我在注释方面错过了一些明显的东西,但也许我应该创建错误报告,让谷歌解决这个问题?
感谢任何意见和想法。