bu sınıfı düşünün:Bıkmadan
public class MyClassOfMystery {
public static final int NO_FLAGS = ~0;
public static final int FIRST_FLAG = 1;
public static final int SECOND_FLAG = 1 << 1;
public static final int THIRD_FLAG = 1 << 2;
public static final int FOURTH_FLAG = 1 << 3;
@Retention(RetentionPolicy.SOURCE)
@IntDef(flag = true, value = {NO_FLAGS, FIRST_FLAG, SECOND_FLAG, THIRD_FLAG, FOURTH_FLAG})
public @interface MysteryFlags { }
... set flags, get flags, and use flags stuff.
}
Sık sık böyle bir şey yarattık ve tüm yinelemenize edebilmek için yararlı olacağını bulundu bayraklar MysteryFlags
'da kullanılabilir.
MysteryFlags
'da ayarlanmış değerlerimi kullanarak yineleyebilir miyim?
Bu ANNOTATION: @java.lang.annotation.Retention(value=SOURCE)
baskılı:
Bu
for (Annotation annotation : Flag.class.getAnnotations()) {
Log.d(TAG, String.format("ANNOTATION: %s", String.valueOf(annotation)));
}
boş Dizi erişimi for (ExtraAction enm : Flag.class.getEnumConstants()) {
Log.d(TAG, String.format("ENUM: %s", String.valueOf(enm)));
}
tarihinde NPE attı
Bu denedim budur Ben sadece bir diziye değerleri ekleyin ve bu yinelemenize biliyorum
for (Field field : Flag.class.getFields()) {
Log.d(TAG, String.format("FIELD: %s", String.valueOf(field)));
}
ve
for (Class<?> aClass : ExtraAction.class.getClasses()) {
Log.d(TAG, String.format("CLASS: %s", String.valueOf(aClass)));
}
, ama bu başka saklamak gerekir:
Bunlar 210 şey yazdırmak vermedi dizi. Yaptığım şey, ama yine de daha iyi bir yol olup olmadığını merak ediyorum.
Çok iyi nokta. –
Saklama politikasını çalışma zamanına değiştirirseniz yineleyebilir miyim? –
Eğer @ IntDef'in değerlerine bakmaya çalışıyorsanız, ben öyle düşünmüyorum. Bu ek açıklamanın saklama politikasını değiştiremezsiniz. –