变量需要声明为final [重复]
Posted
技术标签:
【中文标题】变量需要声明为final [重复]【英文标题】:Variable needs to be declared final [duplicate] 【发布时间】:2016-02-19 17:38:54 【问题描述】:我试图在每次单击按钮时使分数变量增加一个。问题是我必须在 onClick 之外声明 score 变量,否则它将始终设置为 0。此外,我无法声明变量 final,因为我正在修改变量。这是代码。
int score = 0;
View.OnClickListener listener = new View.OnClickListener()
@Override
public void onClick(View v)
score++;
scoreLabel.setText(String.valueOf(score));
【问题讨论】:
使其成为类成员变量 【参考方案1】:理想的解决方案是使变量static
成为外部类的成员。设置为static
意味着,该类的所有对象将共享该变量的一个副本,并且该值在任何地方都将保持不变。
在外部类中声明static int score;
。
【讨论】:
【参考方案2】:如果你不想使用静态变量,你可以在外部类中声明分数(private int score;),然后在构造函数中初始化它。这将为其提供正确的访问范围!
【讨论】:
【参考方案3】:问题是 var score 是在方法中限定的,移动它并将 score 声明为类变量。
【讨论】:
将分数变量作为“全局”变量或类变量移动...... 是的,我知道,但除非我等 10 分钟,否则我做不到。 我刚刚将 score 变量更改为公开。 不是最好的主意。请参阅@Mathews Mathai 发布的答案。【参考方案4】:您可以使用 MutableInt,正如其名称所示,它是一个可变整数。此类在 apache commons 中提供。 这样,您可以保持变量本地和最终。
希望对你有帮助
【讨论】:
以上是关于变量需要声明为final [重复]的主要内容,如果未能解决你的问题,请参考以下文章