1

別のインスタンスを指定して、拡張された匿名インスタンスを動的に作成する方法はありますか? このようなものになるでしょう、そして私はそれが素晴らしいと思います。

File myFile = new File("notes.txt");

new FileWrapper extends myFile(){ //instance!!!
   @Override public boolean equals(File in){ return false;}
};

これは、オブジェクト インスタンスをコピーして、特定のメソッド内のロジックを書き換えるようなものです。

注: myFile がインスタンスではなくクラスの名前である場合、この例が有効であることはわかっていますが、インスタンスの vars と内部情報を保持するために何かを行う必要があります。

4

1 に答える 1

1

いいえ、Java にはそのような機能はありません。「オーバーライド」したい呼び出しを除いて、元のインスタンスに呼び出しを転送するプロキシ オブジェクトに依存する必要があります。

プロキシ オブジェクトに元のオブジェクトと同じを持たせたい場合は、インターフェイスを使用する必要があることに注意してください。プロキシ オブジェクトが元の型を拡張すると、2 つのインスタンスになるためです (作業を行うラップされたオブジェクト)。

参考文献:

(はい、デリゲートメソッドがたくさんあるとめちゃくちゃになることに同意します...)

于 2012-06-01T16:01:40.207 に答える