0

抽象メソッド test() と main メソッドを持つ抽象クラス Tester があります。

    abstract class Tester {

     abstract String test();

     public static void main(String[] args) {
          doSomething();

          Tester t = new Tester() {
          @Override
              String test() {
                return "";
              }
          };        
          result = t.test();

          doSomethingElse();
     }            
    }

明らかに t.test() は、このクラスと他のサブクラスに対して常に "" を返します。

しかし、メインメソッド内でメソッド test() を呼び出したいので、サブクラスはその実行時に(継承されたメインメソッドで)呼び出される独自のテストメソッドを持ちます。

それは私が想像した方法でも可能ですか?どうにかしてオブジェクト t をサブクラス オブジェクトとして (名前を知らなくても) 宣言して、この抽象メソッドの独自の実装を使用できるようにすることはできますか?

4

1 に答える 1

0

アプリケーション/オブジェクト構造をどのように設計したいかを正確に考えていないように思えます。オブジェクトを整理するためのより良い方法がないか試してみてください。

状況を機能させる唯一の方法は、現在のインスタンスの test0() メソッドなどに委任された test() メソッドがある場合です。これは、Java がいくつかの場所で内部的に使用するトリックです。

于 2012-08-30T00:44:10.237 に答える