1

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

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

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

4

1 回答 1

5

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

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

一旦你找到了派生类,你可以用同样的方式检查它们。

于 2012-11-21T17:15:56.273 回答