1

我正在为学校开发这款多人游戏,目前正在尝试从 JTextField 中获取用户名。

这是有问题的代码:

JTextField textField = new JTextField();

new Statistics(textField.getText());

Statistics 需要一个字符串,但是当我尝试这个时,eclipse 告诉我我需要将 JTextField 转换为 final。

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

4

1 回答 1

3

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

我建议您在类中声明 textField,而不是在方法或构造函数中,从而使其成为类字段。如果你做 htis,那么你将不必将其声明为 final。

否则,如果您不能或不应该这样做,那么当然,请继续并声明它(您不能“强制转换”)为最终的。

于 2013-09-30T21:32:19.450 回答