我開始了與這個代碼,沒有編譯:「Anoynmous方法」有趣的行爲
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()
方法。所以,我認爲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()
?
我的問題是如何告訴java compute()
存在?
如果無法做到這一點,我可以像重寫第一個例子中那樣覆蓋Object中存在的方法嗎? compute()
實際上代表的方法是採用int
的方法。這可能是可怕的,但我應該覆蓋wait(long l)
?
在此先感謝。
第二個作品,因爲'toString'是'Object'的方法之一... – assylias