当我尝试使用.getText()时,JTextField想成为一个决赛

时间:2013-09-30 21:29:39

标签: java string swing jtextfield final

我正在为学校开展这款多人游戏而我正在尝试从JTextField获取用户名。

以下是有问题的代码:

JTextField textField = new JTextField();

new Statistics(textField.getText());

统计信息需要一个字符串,但是当我尝试这个时,eclipse告诉我需要将JTextField作为最终版本。

代码有效,因为统计目前还没有做任何事情,但我不认为这应该发生,并且在我开始实施统计数据后会破坏我的代码。任何解释和修复?

1 个答案:

答案 0 :(得分:3)

此调用:new Statistics(textField.getText());可能发生在内部匿名类中,可能在ActionListener内部,而textField是局部变量。问题是匿名内部类使用他们使用的本地字段的副本,如果字段不是最终字段,则副本可能与原始字段不同,从而导致各种问题。

我建议你在类中声明textField,而不是在方法或构造函数中声明,从而使它成为一个类字段。如果你做了htis,那么你将不必将其宣布为最终版。

否则,如果你不能或不应该这样做,那么请确保,继续并宣布它(你不能“施放它”)作为最终。