对于一般用作声明常量的修饰符:final,应用在单例模式中我有个疑问,代码如下:
public class Singleton
{
private static final singleton=new Singleton();//为什么要用final呢?去掉行不行呢?
private Singleton
{}
public static Singleton newInstance()
{
return singleton
}
}
public class Singleton
{
private static final singleton=new Singleton();//为什么要用final呢?去掉行不行呢?
private Singleton
{}
public static Singleton newInstance()
{
return singleton
}
}
因为newInstance方法返回的是一个Singleton对象
加上final就声明了singleton永远为一个Singleton对象,不能改变
1、保证只被赋值一次(也即定义时可以不初始值,而是指运行过程中再进行初始化);
2、可以让匿名类直接进行引用;
3、JVM可以对final变量的使用进行优化(指提升速度层面的,因为不可变,所以直接进入高速缓存区,且不用考虑线程间可见性等问题);