首先,关于变量被“覆盖”的部分
final具有两个非常不同的含义。对于类和方法,它与继承有关。对于变量,它是只读的。
最终局部变量有一个重要的“特征”:它们可以在局部(通常是匿名)内部类中使用。非最终局部变量不能是。
final根据我的经验,这是局部变量的主要用途。
public void foo() { final String x = "hello"; String y = "there"; Runnable runnable = new Runnable() { @Override public void run() { System.out.println(x); // This is valid System.out.println(y); // This is not } }; runnable.run();}
请注意,就样式而言,
final即使 没有 在本地内部类中捕获变量,某些人还是喜欢使用。我当然愿意成为
final默认值,但是对于“ non-
final”使用不同的修饰符,但是我发现在所有地方显式添加修饰符会让人分心。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)