最终静态字段-尽管我在以前使用静态最终字段的许多情况下都使用枚举。 考虑但要谨慎使用:
最终课程-框架/ API设计是我唯一考虑的情况。
最终方法-与最终类基本相同。如果你使用的是疯狂的模板方法模式,并且将内容标记为final,则可能是你对继承的依赖过多,而对委托的依赖则不够。 除非感到肛门,否则忽略:
方法参数和局部变量-我很少这样做,主要是因为我很懒,并且发现它会使代码混乱。我将完全承认,我将不修改的标记参数和局部变量是“正确的”。我希望它是默认设置。但是事实并非如此,我发现遍历Final的代码更加难以理解。如果我使用别人的代码,则不会删除它们,但是如果我正在编写新代码,则不会放入它们。一个例外是必须标记一些最终内容以便可以访问它来自一个匿名内部类。
编辑:请注意,@ adam-gent提到的最终局部变量实际上非常有用的一个用例是,在if/ else分支中将值分配给var时。