私の Android アプリケーションには、次のクラスがあります。
public abstract class A implements IA {
private void findAnnotations() {
Field[] fields = getClass().getFields();
// Get all fields of the object annotated for serialization
if (fields != null && fields.length > 0) {
for (Field f : fields) {
Annotation[] a = f.getAnnotations();
if (annotation != null) {
// Do something
}
}
}
return serializationInfoList
.toArray(new SoapSerializationFieldInfo[serializationInfoList
.size()]);
}
}
と
public abstract class B extends A {
@MyAnnotation(Name="fieldDelaredInB")
public long fieldDelaredInB;
}
を呼び出すと、 B で宣言されたフィールドが返されるB.findAnnotations()
ことがわかります - 。たとえば、これらのフィールドの注釈は返されません。つまり、 を呼び出すとnull が返されます。getClass().getFields()
fieldDelaredInB
f.getAnnotations()
f.getDeclaredAnnotations()
これは、派生クラスの属性に慣れていないスーパークラスの問題ですか? スーパークラスから呼び出したときに派生クラス DO のフィールドが表示されるという事実を考えると、奇妙に思えgetFields()
ます。
私が欠けているもののアイデアはありますか?
ありがとう、ハレル