我在用IntDef https://developer.android.com/reference/android/support/annotation/IntDef.html from Android 支持注解 https://sites.google.com/a/android.com/tools/tech-docs/support-annotations在我的代码中(但我的问题范围更广,所以请继续阅读:),如下所示:
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
with setLockMode()
. But getInt()
不是我的方法,所以我无法注释它的返回值并使这一切都满意。我也几乎可以肯定这不是独特的用例,但我未能找到暂时禁用的方法AllowedValues
注释从这里抱怨或“转换”返回值getInt()
使AllowedValue
不抱怨。
所以我的问题是:有什么办法可以解决这个问题吗?也许我遗漏了一些关于注释的明显内容,但也许我应该创建错误报告来让 Google 解决这个问题?
任何意见或想法表示赞赏。