我发现一些 Java IDE 具有这样的规则:无需询问用户即可将事情最终确定。例如,只需打开一个缺少任何“final”关键字的文件,IDE 就会在各处插入一堆关键字,尤其是在变量上。
我的论点一直是:“如果 IDE 可以通过算法实现,那么 JVM 也可以”
这个论点站得住脚吗? Java 开发人员什么时候应该使用“final”关键字?每个可能是final 的变量都应该这样声明吗?
谢谢!
最佳答案
My argument has always been: "If the IDE can do it algorithmically, so can the JVM"
Does this argument hold water?
不。因为当 IDE 执行此操作时(我还没有看到任何默认在没有询问的情况下执行此操作,即使您可以显式配置它以这种方式执行操作),开发人员可以检查这是否确实是决定他们想。这防止其他代码做违背开发人员意愿的事情。
如果仅在执行时完成,那就无法达到整个目的。如果我创建一个字段 final
来防止其他代码修改它,那么当其他代码尝试修改它时,我希望出现编译时错误。如果它只是由 JVM 决定,我就不能依赖代码不修改它。
When should Java developers be using the 'final' keyword?
对于字段,当字段要在构造函数中初始化并且此后不会更改时。
对于类,当您尚未将类设计为子类时(IMO)。
对于方法,当您没有为子类设计代码来重写该方法时。
对于局部变量,您想要访问匿名内部类中的变量。 (当然,您也可以将它们用于其他局部变量 - 我不倾向于这样做,但我知道有些人这样做。当然,这种差异对于方法之外的代码来说是不可见的。)
关于java - Java的final关键字在大多数情况下真的需要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15616948/