写一个静态内部类单例代码,并在代码中加上注释,并且解释代码
时间: 2023-06-17 19:08:34 浏览: 94
以下代码为静态内部类单例模式的示例:
```java
public class Singleton {
private Singleton() {
// 私有构造方法
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
}
```
代码解释:
1. 外部类 `Singleton` 的构造方法被私有化,保证外部无法直接通过 `new` 关键字创建对象。
2. `getInstance()` 方法是获取单例对象的唯一公开方法,通过调用 `SingletonHolder.INSTANCE` 来获得单例对象。
3. 内部类 `SingletonHolder` 是一个静态内部类,该类内部的静态变量 `INSTANCE` 被初始化为 `Singleton` 的实例,由于是静态变量,所以只会被初始化一次,即保证了线程安全性。
4. 静态内部类 `SingletonHolder` 只有在被调用时才会被加载,而 `SingletonHolder.INSTANCE` 只有在第一次被使用时才会被初始化,即实现了懒加载。
5. 由于静态内部类 `SingletonHolder` 只有在需要时才被加载,因此实现了懒加载,同时由于在加载时会保证线程安全,因此实现了线程安全。
阅读全文