我问这个问题是因为我很好奇.我不想实际遍历类的派生类.我知道我在这里介绍的方法很草率,这只是一个测试.
所以假设我有一个类(抽象与否):
public class SomeClass {
// snip....
}
Run Code Online (Sandbox Code Playgroud)
我可以轻松编写一个方法来遍历类层次结构并找到一个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;
}
Run Code Online (Sandbox Code Playgroud)
现在我该怎么办如果我想Field在派生类中搜索一个type?我没有在java反射包中找到任何有用的东西.
没有简单的方法来遍历派生类,因为您不知道哪些类是从基类派生的.您可以使用Reflections库来查找派生类.这通过检查类路径中的类的字节代码来工作,可选地限于包或预索引.
现在我该怎么办如果我想在类型的派生类中搜索一个字段?
找到派生类后,可以用同样的方法检查它们.
| 归档时间: |
|
| 查看次数: |
673 次 |
| 最近记录: |