如何在java中的类的派生类中查找字段?

时间:2012-11-21 17:12:12

标签: java reflection

我问这个问题因为我很好奇。我不想实际遍历类的派生类。我知道我在这里介绍的方法很草率,这只是一个测试。

假设我有一个类(抽象与否):

    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反射包中找到任何有用的东西。

1 个答案:

答案 0 :(得分:5)

没有简单的方法来遍历派生类,因为您不知道哪些类是从基类派生的。您可以使用Reflections库来查找派生类。这通过检查类路径中的类的字节代码来工作,可选地限于包或预索引。

  

现在我该怎么办?如果我想在类型的派生类中搜索一个字段?

找到派生类后,您可以用同样的方式检查它们。