1

public m メソッドをどのように呼び出すことができるのだろうか?

public class Test1 {

    public static void main(String[] args) {
        Test1 test = new Test1() {
            public void m() {
                System.out.println("m");
            }
        };
    }
}
4

3 に答える 3

2

私はあなたができるとは思わない。インターフェイスまたはサブクラスを作成する必要があります。(まあ、それはおそらく真実ではありません。おそらく、反射でそれを行うことができます。)

たとえば、次のように (作成後に呼び出す場所test.m()):

public class Test1 {

    public static void main(String[] args) {
        SubTest1 test = new SubTest1() {
            public void m() {
                System.out.println("m");
            }
        };
        test.m();
    }

    private static abstract class SubTest1 extends Test1 {
        public abstract void m();
    }
}

または、このように、建設中に発生します。

public class Test1 {

    public static void main(String[] args) {
        SubTest1 test = new SubTest1() {
            public void m() {
                System.out.println("m");
            }
        };
    }

    private static abstract class SubTest1 extends Test1 {
        public SubTest1() {
            this.m();
        }

        public abstract void m();
    }
}

匿名クラスのコンストラクターを定義することはできないため、last はSubTest1クラスのコンストラクターと抽象メソッドを使用します。

于 2013-06-10T20:59:02.700 に答える
0

Test1 に "m" というメソッドがある場合、内部クラスをインスタンス化した後で test.m() を呼び出すことができます。

public class Test1 {

    public static void main(String[] args) {
        Test1 test = new Test1() {
            public void m() {
                System.out.println("New Behavior");
            }
        };
        test.m();
    }

    public void m() {
       System.out.println ("Default Behavior");
    }
}

これを実行すると、次のように出力されます。

New Behavior
于 2013-06-10T21:11:51.417 に答える