我已經爲一個我的應用程序創建了此GUI。在重寫方法actionPerformed
我必須爲字符串command
插入final
,因爲此變量用於內部類。有一種方法可以避免這個問題?避免使用最終的字符串變量
@Override
public void actionPerformed(ActionEvent e)
{
final String command = e.getActionCommand();
if(command.equals("add"))
{
new Thread(new Runnable(){
@Override
public void run()
{
// ... code skipped ... //
ous.writeObject(command);
// ... code skipped ... //
}
}).start();
}
else if(command.equals("remove"))
{
new Thread(new Runnable(){
@Override
public void run()
{
// ... code skipped ... //
ous.writeObject(command);
// ... code skipped ... //
}
}).start();
}
}
我試圖解決在代碼開頭聲明
String command = null;
問題。
會有什麼問題?必須輸入「最終」? :)你能否詳細說明一下? – 2012-01-14 17:50:02
您的代碼未確認[SSCCE](http://sscce.org/)。 – Lion 2012-01-14 17:55:51
您不應該爲您正在嘗試的操作創建一個新的'Thread'實例,而是使用'SwingWorker'(或在EDT上調用您的'emptyTextField')。此外,讀取線程中文本字段的值也應在EDT上進行。最後,關閉你的流應該發生在'finally'塊 – Robin 2012-01-14 18:08:29