这个问题已经被问到here了。根据答案:
private final int NUMBER = 10;如果它不能更改,则没有必要在每个实例中拥有一个副本。
我的疑问是,如果创建了类的实例,比如每天创建一次,并且持续几秒钟,那会怎样呢?将int(在某些情况下是对象)保存在内存中是个好主意吗?
假设有许多这样的对象(20-30)。
发布于 2014-03-24 11:21:36
如何存储这些信息在很大程度上取决于它的用途。
您可以采取以下几种方法:
私有静态最终
如果该值在应用程序的生存期内永远不会被修改,这是一个很好的选择。这意味着,当您创建多个实例时,实际上只存储这个特定变量一次。
私有最终
这意味着该值可能对对象的不同实例采用不同的值,但任何特定实例都不会在对象的整个生命周期内对其值进行修改。
如果你看到的东西可能会在一段时间内呈现不同的值,那么你可能会对此感兴趣。
公共静态int GetNumber(){.}
您可能考虑的另一种方法是让一个静态方法返回您想要的值。这使得处理值的更改变得容易,但您还需要考虑这种更改在任何给定实例的整个生命周期中的影响。
希望能帮上忙..。
发布于 2014-03-24 12:28:59
关于private final int number,你声称
如果它不能更改,则没有必要在每个实例中拥有一个副本。
绝对是错的。考虑以下代码,典型的不可变类:
private final int number;
public MyClass(int number) {
this.number = number;
}在JDK和世界各地的生产代码类中,有许多这种模式的实例。
要回答有关性能的问题,我怀疑您是否能够度量使用静态和实例常量之间的区别。
https://stackoverflow.com/questions/22607743
复制相似问题