public m メソッドをどのように呼び出すことができるのだろうか?
public class Test1 {
public static void main(String[] args) {
Test1 test = new Test1() {
public void m() {
System.out.println("m");
}
};
}
}
public m メソッドをどのように呼び出すことができるのだろうか?
public class Test1 {
public static void main(String[] args) {
Test1 test = new Test1() {
public void m() {
System.out.println("m");
}
};
}
}
私はあなたができるとは思わない。インターフェイスまたはサブクラスを作成する必要があります。(まあ、それはおそらく真実ではありません。おそらく、反射でそれを行うことができます。)
たとえば、次のように (作成後に呼び出す場所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
クラスのコンストラクターと抽象メソッドを使用します。
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