我正在为学校开展这款多人游戏而我正在尝试从JTextField获取用户名。
以下是有问题的代码:
JTextField textField = new JTextField();
new Statistics(textField.getText());
统计信息需要一个字符串,但是当我尝试这个时,eclipse告诉我需要将JTextField作为最终版本。
代码有效,因为统计目前还没有做任何事情,但我不认为这应该发生,并且在我开始实施统计数据后会破坏我的代码。任何解释和修复?
答案 0 :(得分:3)
此调用:new Statistics(textField.getText());
可能发生在内部匿名类中,可能在ActionListener内部,而textField是局部变量。问题是匿名内部类使用他们使用的本地字段的副本,如果字段不是最终字段,则副本可能与原始字段不同,从而导致各种问题。
我建议你在类中声明textField,而不是在方法或构造函数中声明,从而使它成为一个类字段。如果你做了htis,那么你将不必将其宣布为最终版。
否则,如果你不能或不应该这样做,那么请确保,继续并宣布它(你不能“施放它”)作为最终。