繁体   English   中英

私人决赛与私人决赛

[英]private static final vs private final

这里有人提出这个问题。 根据答案:

private final int NUMBER = 10;

如果它不能改变,那么每个实例只有一个副本是没有意义的。

我怀疑的是,如果创建了一个类的实例,比如说每天一次并持续几秒钟。 将int(在某些情况下是对象)保留在内存中是个好主意吗?

假设,可能有许多(20-30)个这样的对象。

如何存储信息在很大程度上取决于它的用途。

您可以采取以下几种方法:

私人静态决赛

如果在应用程序的生命周期内永远不会修改该值,那么这是一个不错的选择。 这意味着,当您创建多个实例时,实际上只存储了此特定变量ONCE。

私人决赛

这适用于值对于对象的不同实例可能采用不同值的那些时间,但任何特定实例在整个对象的生命周期内都不会修改它的值。

如果您正在查看可能在一段时间内采用不同值的内容,那么您可能会对此感兴趣。

public static int GetNumber(){...}

您可能考虑的另一种方法是让静态方法返回您所追求的值。 这使得处理值的变化变得容易,但是您还需要考虑在任何给定实例的整个生命周期中这种变化的影响。

希望有帮助......

关于private final int number ,你的主张

如果它不能改变,那么每个实例只有一个副本是没有意义的

是绝对错误的。 考虑这段代码,典型的不可变类:

private final int number;

public MyClass(int number) {
    this.number = number;
}

JDK中有许多这种模式的实例,并且遍布全球的生产代码类。


要回答关于性能的问题,我怀疑你可以衡量使用静态与实例常量之间的区别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM