好問題.答案是否你不能直接調用date.someMethod();
我們先來了解這是什麼.
Date date = new Date() { ... };
以上是延續Date類的匿名(沒有名稱)子類.
當你看到代碼,
Runnable r = new Runnable() {
public void run() {
}
};
這意味着您已經定義了正在實作(不擴充)Runnable接口的匿名(沒有名稱)類.
是以當你調用date.someMethod()它将無法調用,因為someMethod沒有在超類中定義.在上面的例子中,超類是Date類.它遵循簡單的首要規則.
但是如果你想調用someMethod,那麼以下是步驟.
Fisrt方式>參考變量’date’
.date.getClass()getMethod( “的someMethod”)調用(日期).
第二種方式>
用建立的Date類的匿名子類的對象.
new Date()
{
public void someMethod() {
System.out.println("Hello");
}
}.someMethod(); //this should be without reference 'date'