这更像是一个理论问题而不是解决方案问题,所以请听我说。
在C/C++和PHP中,你可以声明常量。通常有几种方法可以做到这一点(例如#DEFINE
或'const type
'...),其最终效果是在编译期间进行替换,使得所有这些命名常量变成文字。这有助于避免访问内存位置查找数据的需要,因为数据被硬编码了,但又不会出现硬编码的缺点——如果需要重新使用该值,则需要调用该值,并且需要在需要更改该值时更改所有实例。
但是Java的final
声明略微晦涩;因为我可以创建一个具有未设置的final变量的类并在构造函数中初始化它们,这意味着就我所知道的,它们不会作为文字预编译。除了保证它们不能在构造后逻辑上更改之外,final
声明是否提供任何效率上的好处?
参考文章是可以的,只要你注意解释final
真正的功能以及除了防止构造后更改值之外的其他任何好处。
作为一个推论,是否可能以任何方式在Java中声明编译级别的常量,而不仅仅是使用文字(这本来就是一个坏主意?)