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 に答える