Java 安卓支持注释“;应该有@Retention(RetentionPolicy.SOURCE)“;
我正在为库中的一些方法使用Java 安卓支持注释“;应该有@Retention(RetentionPolicy.SOURCE)“;,java,android,android-annotations,Java,Android,Android Annotations,我正在为库中的一些方法使用@Retention和@StringDef注释,我想理解,我面临一个奇怪的警告 在静态类中,SIP,我使用以下注释: public static final String CODEC_SPEEX_16K = "speex/16000/1"; public static final String CODEC_SPEEX_8K = "speex/8000/1"; public static final String CODEC_SPEEX_32K = "speex/
@Retention
和@StringDef
注释,我想理解,我面临一个奇怪的警告
在静态类中,SIP
,我使用以下注释:
public static final String CODEC_SPEEX_16K = "speex/16000/1";
public static final String CODEC_SPEEX_8K = "speex/8000/1";
public static final String CODEC_SPEEX_32K = "speex/32000/1";
public static final String CODEC_ILBC_8K = "iLBC/8000/1";
public static final String CODEC_GSM_8K = "GSM/8000/1";
public static final String CODEC_PCMU_8K = "PCMU/8000/1";
public static final String CODEC_PCMA_8K = "PCMA/8000/1";
public static final String CODEC_G722_16K = "G722/16000/1";
@Retention(RetentionPolicy.CLASS)
@StringDef({
CODEC_SPEEX_16K,
CODEC_SPEEX_8K,
CODEC_SPEEX_32K,
CODEC_ILBC_8K,
CODEC_GSM_8K,
CODEC_PCMU_8K,
CODEC_PCMA_8K,
CODEC_G722_16K
})
public @interface CodecName {}
public static final String RES_TYPE_STRING = "string";
public static final String RES_TYPE_DRAWABLE = "drawable";
public static final String RES_TYPE_LAYOUT = "layout";
public static final String RES_TYPE_VIEW = "id";
public static final String RES_TYPE_DIMEN = "dimen";
public static final String RES_TYPE_COLOR = "color";
public static final String RES_TYPE_ANIM = "anim";
public static final String RES_TYPE_MIPMAP = "mipmap";
@Retention(RetentionPolicy.CLASS)
@StringDef({
RES_TYPE_STRING,
RES_TYPE_DRAWABLE,
RES_TYPE_LAYOUT,
RES_TYPE_DIMEN,
RES_TYPE_COLOR,
RES_TYPE_ANIM,
RES_TYPE_VIEW,
RES_TYPE_MIPMAP
})
public @interface ResourceType {
}
它编译得很好,没有任何警告
在静态类Tools
中,我使用以下注释:
public static final String CODEC_SPEEX_16K = "speex/16000/1";
public static final String CODEC_SPEEX_8K = "speex/8000/1";
public static final String CODEC_SPEEX_32K = "speex/32000/1";
public static final String CODEC_ILBC_8K = "iLBC/8000/1";
public static final String CODEC_GSM_8K = "GSM/8000/1";
public static final String CODEC_PCMU_8K = "PCMU/8000/1";
public static final String CODEC_PCMA_8K = "PCMA/8000/1";
public static final String CODEC_G722_16K = "G722/16000/1";
@Retention(RetentionPolicy.CLASS)
@StringDef({
CODEC_SPEEX_16K,
CODEC_SPEEX_8K,
CODEC_SPEEX_32K,
CODEC_ILBC_8K,
CODEC_GSM_8K,
CODEC_PCMU_8K,
CODEC_PCMA_8K,
CODEC_G722_16K
})
public @interface CodecName {}
public static final String RES_TYPE_STRING = "string";
public static final String RES_TYPE_DRAWABLE = "drawable";
public static final String RES_TYPE_LAYOUT = "layout";
public static final String RES_TYPE_VIEW = "id";
public static final String RES_TYPE_DIMEN = "dimen";
public static final String RES_TYPE_COLOR = "color";
public static final String RES_TYPE_ANIM = "anim";
public static final String RES_TYPE_MIPMAP = "mipmap";
@Retention(RetentionPolicy.CLASS)
@StringDef({
RES_TYPE_STRING,
RES_TYPE_DRAWABLE,
RES_TYPE_LAYOUT,
RES_TYPE_DIMEN,
RES_TYPE_COLOR,
RES_TYPE_ANIM,
RES_TYPE_VIEW,
RES_TYPE_MIPMAP
})
public @interface ResourceType {
}
我得到了警告:
typedef注释…toolbox.Tools.ResourceType应具有
@保留(RetentionPolicy.SOURCE)
这似乎没有批评,一切都很好。
但是谁能解释一下,为什么
注释#1没有得到警告
注释#2得到警告
两者的构建完全相同,仅在静态上下文中使用。在我看来,两者都是一样的