Effective java 第2版 - 笔记(01) 单例(Singleton)的枚举(enum)实现

简介: 直接上代码: 1 public enum Boss { 2 3 INSTANCE; 4 5 private String name; 6 7 public void doSomeThing() { 8 System.

直接上代码:

 1 public enum Boss {
 2 
 3     INSTANCE;
 4 
 5     private String name;
 6 
 7     public void doSomeThing() {
 8         System.out.println(name + " is doing something now...");
 9     }
10 
11     public String getName() {
12         return name;
13     }
14 
15     public void setName(String name) {
16         this.name = name;
17     }
18 
19 }

注:java中的enum是一个彻彻底底的class,可以自由添加其它属性、方法,所以完全可以当成一个class来用。

 

验证:

 1     @Test
 2     public void testSingleton() {
 3 
 4         Boss b1 = Boss.INSTANCE;
 5         b1.setName("张三");
 6         b1.doSomeThing();//张三 is doing something now...
 7 
 8         Boss b2 = Boss.INSTANCE;
 9         b2.doSomeThing();//张三 is doing something now...
10 
11         System.out.println(b1.equals(b2));//true
12 
13     }

11行输出的true,已经证明了b1与b2是同一个对象,而且这种方式绝对防止反射调用私有构造器来破坏单例。

目录
相关文章
|
9天前
|
Java
Java基础—笔记—static篇
`static`关键字用于声明静态变量和方法,在类加载时初始化,只有一份共享内存。静态变量可通过类名或对象访问,但推荐使用类名。静态方法无`this`,不能访问实例成员,常用于工具类。静态代码块在类加载时执行一次,用于初始化静态成员。
10 0
|
9天前
|
Java API 索引
Java基础—笔记—String篇
本文介绍了Java中的`String`类、包的管理和API文档的使用。包用于分类管理Java程序,同包下类无需导包,不同包需导入。使用API时,可按类名搜索、查看包、介绍、构造器和方法。方法命名能暗示其功能,注意参数和返回值。`String`创建有两种方式:双引号创建(常量池,共享)和构造器`new`(每次新建对象)。此外,列举了`String`的常用方法,如`length()`、`charAt()`、`equals()`、`substring()`等。
14 0
|
21天前
|
设计模式 安全 Java
在Java中即指单例设计模式
在Java中即指单例设计模式
15 0
|
5天前
|
设计模式 存储 Java
Java设计模式:解释一下单例模式(Singleton Pattern)。
`Singleton Pattern`是Java中的创建型设计模式,确保类只有一个实例并提供全局访问点。它通过私有化构造函数,用静态方法返回唯一的实例。类内静态变量存储此实例,对外仅通过静态方法访问。
12 1
|
9天前
|
Java API
Java基础—笔记—内部类、枚举、泛型篇
本文介绍了Java编程中的内部类、枚举和泛型概念。匿名内部类用于简化类的创建,常作为方法参数,其原理是生成一个隐含的子类。枚举用于表示有限的固定数量的值,常用于系统配置或switch语句中。泛型则用来在编译时增强类型安全性,接收特定数据类型,包括泛型类、泛型接口和泛型方法。
9 0
|
1月前
|
Java
JAVA枚举
JAVA枚举
10 1
|
1月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--快速排序
数据结构与算法(Java篇)笔记--快速排序
|
1月前
|
机器学习/深度学习 算法 搜索推荐
数据结构与算法(Java篇)笔记--归并排序
数据结构与算法(Java篇)笔记--归并排序
时间轮-Java实现篇
在前面的文章《[时间轮-理论篇](https://developer.aliyun.com/article/910513)》讲了时间轮的一些理论知识,然后根据理论知识。我们自己来实现一个简单的时间轮。
|
1天前
|
安全 Java
java多线程(一)(火车售票)
java多线程(一)(火车售票)