正确使用final

6 java final

可能重复:
Java final修饰符

这只是一个关于偏好的小问题.最终修饰符的正确用法是什么?

我注意到,从源到源,我倾向于使用它比其他人更多.我把它作为方法的参数,方法中的变量和我能做的.这是必要的还是我只是过度了?

参考:

private final int x;
private final int y;
private final int id;
private final int width;
private final int height;

public Widget(final int id, final int x, final int y, final int width, final int height) {
    this.id = id;
    this.x = x;
    this.y = y;
    this.xmod = x;
    this.ymod = y;
    this.width = width;
    this.height = height;
}
Run Code Online (Sandbox Code Playgroud)

Lou*_*man 5

是的,你做得太过分了.从历史上看,这可能会导致一些优化 - 例如,最终方法可以更容易地内联 - 但是现在,无论您是否实际标记方法最终,大多数优化都会完成.

你应该仍然使用final的地方是在类中的大多数字段,不应该或不扩展的类上,不希望被覆盖的方法,以及需要在匿名内部引用的局部变量类.

特别是,在局部变量和方法参数上执行它是不合适的,这些参数不会包含在匿名内部类中.

  • +1我同意过度使用会导致混乱,尤其是方法参数和局部变量.另外,`final`一般没有运行时影响http://www.ibm.com/developerworks/java/library/j-jtp1029/index.html (2认同)