Gna*_*anz 4 java performance final class constants
在使用具有常量实用程序类的final关键字时,我们可以获得性能和/或任何其他好处的任何差异.[此类仅包含静态最终字段和私有构造函数以避免对象创建]
public class ActionConstants {
private ActionConstants() // Prevents instantiation
{ }
public static final String VALIDFIRSTLASTNAME = "[A-Za-z0-9.\\s]+";
public static final String VALIDPHONENUMBER = "\\d{10}";
...
...
}
Run Code Online (Sandbox Code Playgroud)
只有差异才是最终的阶级
public final class ActionConstants {
private ActionConstants() // Prevents instantiation
{ }
public static final String VALIDFIRSTLASTNAME = "[A-Za-z0-9.\\s]+";
public static final String VALIDPHONENUMBER = "\\d{10}";
...
...
}
Run Code Online (Sandbox Code Playgroud)
我想知道,使用final有什么好处,以及为常量定义类的正确方法是什么.
没有任何好处.它不会改变有关您的static final属性的任何内容.
当一个类成为最终类时,编译器可以利用它来实现可覆盖的方法(静态方法不能被覆盖,充其量,它们将这些方法隐藏在继承的类中).
由于该类是final,因此编译器知道它的方法都不能被覆盖.因此,它可以计算不需要生成多态代码的情况(即,代码在运行时根据对象实例找到覆盖方法的正确'版本').因此,可以进行优化.
如果你想让一个类真正独特,你可以使用这样的东西:
public enum ActionConstants {
INSTANCE;
public static final int cte1 = 33;
public static final int cte2 = 34;
}
Run Code Online (Sandbox Code Playgroud)
如果你根本不对类实例感兴趣,只需将所有常量放在一个接口中.
| 归档时间: |
|
| 查看次数: |
2471 次 |
| 最近记录: |