![](/img/trans.png)
[英]Seperation of method calls for interface implementation in Java , Maybe Using Spring
[英]Java inline interface implementation, variables and method calls
在Java中,為什么可以這樣做
new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
screenClosed();
}
}
// ...
public void screenClosed() {
running = false;
}
但不是
new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
running = false;
}
}
?
我猜在running
是一個局部變量,而不是第二個示例中的字段,您必須使用screenClosed
方法使其成為一個字段才能使其正常工作? 從您的代碼示例很難分辨。
如果是這樣:內部類(例如本地或匿名類)要求將(本地)變量標記為final
(它們是常量)。 這是由於編譯器通過將變量作為參數傳遞給編譯器創建的構造函數,然后將其作為字段存儲在編譯器生成的類中而構造類的方式所致。
您可以通過將局部變量聲明為以下方式來解決此限制:
final boolean[] running = new boolean[]{true};
然后設置running[0] = false
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.