私はコンパイルされなかったこのコードから始めました:
Object[] obj= new Object[2];
obj[0]=new Object () { public String compute() {return "yay 1!";} };
obj[1]=new Object () { public String compute() {return "yay 2!";} };
for (Object o : obj)
System.out.println(o.compute());
compute()
Object にはメソッドが定義されていないためです。したがって、Java が関数を破棄したと想定しました。ただし、以下は機能しました。
Object[] obj= new Object[2];
obj[0]=new Object () { public String toString() {return "yay 1!";} };
obj[1]=new Object () { public String toString() {return "yay 2!";} };
for (Object o : obj)
System.out.println(o);
では、Java にはまだ関数定義がどこかに格納されている必要がありますね。それとも、私がオーバーライドしているためですtoString()
か?
compute()
私の質問は、存在するJavaをどのように伝えるのですか?
それができない場合、最初の例で行ったように、オブジェクトに存在するメソッドをオーバーライドするようなことはできますか? compute()
実際に表すメソッドは、 を取るメソッドですint
。これは恐ろしいかもしれませんが、オーバーライドする必要がありますwait(long l)
か?
前もって感謝します。