私は2つのクラスと1つのインタフェースを持っています。クラスのコンストラクタに渡された匿名クラスでprint文が呼び出されない
インタフェース:
public interface MyBirthdayEvent {
void itsMyBirthday();
}
ファーストクラス:
public class MyBirthdayButton
{
public void addOnClickedListener(MyBirthdayEvent mbe){}
}
セカンドクラス:
public class TestThisStuff {
public static void main(String[] args) {
MyBirthday myBirthday = new MyBirthday();
}
}
:
public class MyBirthday {
private MyBirthdayButton myBirthdayButton = new MyBirthdayButton();
MyBirthday() {
myBirthdayButton.addOnClickedListener(new MyBirthdayEvent() {
public void itsMyBirthday() {
System.out.println("Happy Birthday");
}
});
}
}
次にメインに、私はこれを持っています
コードからわかるように、私はMyBirthdayコンストラクタで匿名クラスを使用しています。これを行うには、文字列"Happy Birthday"
をコンソールに出力しようとしています。
新しいmyBirthdayオブジェクトを作成してMyBirthday
コンストラクタをmainに呼び出すと、文字列"Happy Birthday"
がコンソールに表示されません。それはコンソールに印刷してはいけませんか?そうでない場合、私は何を間違っているのですか?あなたは法に
したがって、 'MyBirthday'のコンストラクタは' onClilckedListener'を追加します。上記の方法を正確に呼び出すのは何ですか?これはSwingのようなGUIに夢中になっていますか?コードが現れたので、このメソッドを呼び出すものは何もありません。私がちょうど何かを正しく読んでいない限り。 – KevinO
mainでは、コンストラクタを呼び出すときに、print文がコンストラクタ内に存在するので、print文を呼び出すべきではありませんか? –
printステートメントはコンストラクターにはありません。メソッドが 'itsMyBirthday()'にあり、呼び出された場所はありません(答えが指摘されているので)。メソッドを呼び出すか、実際にコンストラクターに入るようにprintステートメントを移動します。 – KevinO