1

私はこれを持っています:

public interface Receiver extends x.y.a
{
    public static abstract class Stub extends x.y.b implements Receiver
    {
        public Stub()
        {
        }
    }
}

これを書きたい:

private final Receiver receiver = new Receiver.Stub()
{
};

リフレクションを使用しています。それは可能ですか?Stub() コンストラクターを見つけることができますが、もちろん単独では実行できません。

4

3 に答える 3

2

いいえ、それは不可能です。リフレクションを通じて抽象クラスをインスタンス化しようとすると、例外が発生します。いずれにせよ、抽象クラスをインスタンス化できないことを常に覚えておいてください。匿名クラスを作成できますが。

于 2012-07-07T21:16:46.917 に答える
1

コードは反映されずに機能します。匿名のサブクラスを作成しています。AFAIKリフレクションを使用してサブクラス(匿名)を作成することはできません。多分このスレッドは有益です:

Javaでは、親クラスのインスタンスのみを指定して、匿名のサブクラスインスタンスを動的に作成できますか?

またはこれ:リフレクションを使用しながら匿名クラスを作成することは可能ですか?

于 2012-07-07T21:22:22.633 に答える
1

私が知っていることから、抽象クラスのインスタンスを作成することはできません。反省があっても。そのクラスが抽象的でない場合は、単に呼び出すことができます

Constructor c = Receiver.Stub.class.getConstructor(null);
Receiver r= (Receiver)c.newInstance(null);
于 2012-07-07T21:05:53.793 に答える