用java语言设计一个领导类(Leader),要求如下: 1.该类只允许有一个实例对象CEO。 2.在main()方法中创建两个Leader类的对象,并且打印出判断两个对象相同 的结果为真。写出源代码
时间: 2024-10-16 16:21:13 浏览: 23
应用源码之immomo.part2.zip
在Java中,你可以使用单例模式来保证只有一个CEO实例,并通过双重检查锁定(Double-Check Locking)来避免同步问题。下面是一个简单的实现:
```java
public class Leader {
// 使用 volatile 关键字确保在多线程环境下,只有一次初始化
private static volatile Leader ceo;
private Leader() {}
public static Leader getInstance() {
if (ceo == null) { // 第一次检查,如果还没有实例化,进行同步操作
synchronized (Leader.class) {
if (ceo == null) { // 再次检查,如果还是null,才创建实例
ceo = new Leader();
}
}
}
return ceo;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Leader) {
return this == obj; // 对象相等仅当它们是同一个引用
}
return false;
}
public static void main(String[] args) {
Leader leader1 = getInstance(); // 创建第一个实例
Leader leader2 = getInstance(); // 创建第二个实例
System.out.println(leader1 == leader2); // 输出 true,因为它们指向的是同一个CEO实例
}
}
```
在这个例子中,`equals()`方法被重写为检查两个Leader对象是否引用了同一个内存地址,这在单例模式下是正确的做法。
阅读全文