5

java.beans.Introspector getBeanInfo がスーパーインターフェースのプロパティを取得していないことに気付きました。例:

public interface Person {
    String getName();
}
public interface Employee extends Person {
    int getSalary();
}

名前が Person から継承されていても、Employee をイントロスペクトすると給与しか得られません。

どうしてこれなの?すべてのゲッターを取得するためにリフレクションを使用する必要はありません。

4

4 に答える 4

3

この問題は、Sun のバグ java.beans.Introspector does not work for interfaces で説明されています。

于 2009-05-15T07:38:58.773 に答える
3

Philが書いたように、Java VM はそのままではこれをサポートしていません。これも必要で、 Diergo Utils 1.5の一部としてヘルパー クラスを実装しました。

于 2011-03-30T08:50:14.200 に答える
1

使ってみて

public static BeanInfo getBeanInfo(Class<?> beanClass, Introspector.USE_ALL_BEANINFO);

探している結果が得られるかどうかを確認します。

于 2008-10-09T04:47:17.340 に答える
0

このような場合、カスタム BeanInfo クラスを作成する必要があります。

于 2008-10-12T23:45:26.187 に答える