2017-08-15 119 views
0

我正在做Java Swing應用程序。我做了複選框項目,然後當我打電話給show.isSelected()方法時,我得到了一個錯誤,你必須讓最終顯示,然後我做了最後的決定,錯誤消失了,錯誤在第9行,但我不明白那是什麼原因讓決賽做決賽,以及決賽什麼是決賽?關於java最終訪問修飾符

final JCheckBoxMenuItem show=new JCheckBoxMenuItem("Show"); 
    show.setSelected(true); 
    show.addActionListener(new ActionListener(){ 

     public void actionPerformed(ActionEvent arg0) 
     { 

      formpanel.setVisible(show.isSelected()); ////// giving error without final 

     } 

    }); 
+0

重複:https://stackoverflow.com/questions/4732544/why-are-only-final-variables-accessible-in-anonymous-class –

+1

此錯誤顯示您使用的是舊版本的Java。 Java 8會自動檢測引用是否有效。 –

+1

如果您使用Java 8,則不必顯式聲明它爲「final」。有效的最終結果就足夠了,即你不需要在任何地方重新分配變量。 – bcsb1001

回答

1

final關鍵字阻止你重新分配基準show所以編譯器可以安全地複製它的值插入new ActionListener語句創建新的匿名對象。

+0

你能給我舉個例子嗎? –