我问这个问题因为我很好奇。我不想实际遍历类的派生类。我知道我在这里介绍的方法很草率,这只是一个测试。
假设我有一个类(抽象与否):
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
的派生类中搜索type
?我没有在java反射包中找到任何有用的东西。
答案 0 :(得分:5)
没有简单的方法来遍历派生类,因为您不知道哪些类是从基类派生的。您可以使用Reflections库来查找派生类。这通过检查类路径中的类的字节代码来工作,可选地限于包或预索引。
现在我该怎么办?如果我想在类型的派生类中搜索一个字段?
找到派生类后,您可以用同样的方式检查它们。