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

Ada*_*old 1 java reflection

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

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

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

Pet*_*rey 5

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

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

找到派生类后,可以用同样的方法检查它们.