我发现了一些参考(例如),它们建议final
尽可能多地使用它,我想知道这有多重要。这主要是在方法参数和局部变量的上下文中,而不是最终方法或类。对于常量,这很明显。
一方面,编译器可以进行一些优化,使程序员的意图更加清晰。另一方面,它增加了冗长性,并且优化可能微不足道。
我需要努力记住的东西吗?
最终静态字段-尽管我在以前使用静态最终字段的许多情况下都使用枚举。
考虑但要谨慎使用:
最终课程-框架/ API设计是我唯一考虑的情况。
最终方法-与最终类基本相同。如果你使用的是疯狂的模板方法模式,并且将内容标记为final,则可能是你对继承的依赖过多,而对委托的依赖则不够。
除非感到肛门,否则忽略:
方法参数和局部变量-我很少这样做,主要是因为我很懒,并且发现它会使代码混乱。我将完全承认,我将不修改的标记参数和局部变量是“正确的”。我希望它是默认设置。但是事实并非如此,我发现遍历Final的代码更加难以理解。如果我使用别人的代码,则不会删除它们,但是如果我正在编写新代码,则不会放入它们。一个例外是必须标记一些最终内容以便可以访问它来自一个匿名内部类。
编辑:请注意,@ adam-gent提到的最终局部变量实际上非常有用的一个用例是,在if/ else分支中将值分配给var时。
问题内容: 给定以下程序: 您是否希望在run方法中的while循环仍在执行且局部变量test仍在范围内时调用finalize? 更重要的是,此行为在任何地方都有定义吗?Sun有什么声明它是实现定义的吗? 这与以前人们在主要关注内存泄漏的SO上提出此问题的方式相反。在这里,我们让GC积极地对变量感兴趣的变量进行GC处理。您可能会因为测试仍在“范围内”而不会被GC,所以您可能会期望这样做。 作为记录
我想问一个问题,什么时候在Java中使用静态变量/方法或实例变量/方法更有利? 我知道这取决于特定的情况(比如将util类编程为静态方法),但是我们能声明一些像通用策略一样的东西吗?
问题内容: 我知道他们两个都禁用了Nagle的算法。 我什么时候应该/不应该使用它们中的每一个? 问题答案: 首先,不是所有人都禁用Nagle的算法。 Nagle的算法用于减少有线中更多的小型网络数据包。该算法是:如果数据小于限制(通常是MSS),请等待直到收到先前发送的数据包的ACK,同时累积用户的数据。然后发送累积的数据。 这将对telnet等应用程序有所帮助。但是,在发送流数据时,等待A
问题内容: 在该类中,有两个字符串,和。 有什么不同?我什么时候应该使用另一个? 问题答案: 如果你的意思是和则: 用于在文件路径列表中分隔各个文件路径。考虑在上的环境变量。您使用a分隔文件路径,因此在上将是;。 是或用于拆分到特定文件的路径。例如在上,或
问题内容: 在集成我以前从未使用过的Django应用程序时,我发现了用于定义类中函数的两种不同方式。作者似乎非常有意地使用了它们。第一个是我自己经常使用的: 另一个是我不使用的,主要是因为我不知道何时使用它,以及什么用途: 在Python文档中,装饰器的解释如下: 类方法将类作为隐式第一个参数接收,就像实例方法接收实例一样。 所以我想指的是自己(而不是实例)。我不完全理解为什么会这样,因为我总是可
问题内容: 什么是,什么时候应该使用它们? 我并不了解这些术语,因此当我回到家并开始使用Google Observer和Google搜索时,发现了来自不同资源的一些观点: 1)是一个类,是一个接口。 2)该类维护一个 列表。 3)当一个对象被更新时,它调用其每个的方法来通知它已被更改。 我发现这个例子: 但是我不明白为什么我们需要和?的用途和方法是什么? 问题答案: 有一个学生和一个留言板的具体示