私は興味があるのでこの質問をします。クラスの派生クラスを実際にトラバースしたくありません。私がここで提示する方法はずさんなことを知っています。これは単なるテストです。
だから私がクラスを持っていると仮定します(抽象的かどうか):
public class SomeClass {
// snip....
}
Field
クラス階層をたどって例を見つけるメソッドを簡単に書くことができます。
private Field extractField(Class<?> type, String fieldName) {
Field ret = null;
try {
ret = type.getDeclaredField(fieldName);
} catch (NoSuchFieldException e) {
Class<?> superclass = type.getSuperclass();
if (superclass == null) {
throw new IllegalArgumentException("Missing field detected.", e);
} else {
ret = extractField(superclass, fieldName);
}
}
return ret;
}
Field
の派生クラスでaを検索したい場合は、どうすればよいtype
ですか?Javaリフレクションパッケージには何も役に立ちませんでした。