技术目标:
常量的定义在代码中广泛应用,但基于常量,还有一个枚举也同样方便,但用到的频率却偏低了很多,在这里给大家介绍一下枚举enumration的应用。`
技术实现:
-
首先,要了解一下枚举的定义,百度百科里是这么说的:在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。
-
java中的枚举enumration
使用习惯后,你会发现enumration在java中,类似于<K,V>模式的Map的集合(在这里就不谈原理和底层了,想深入了解的可以去搜一下相关文章)。 -
enumration的实际应用
- 首先创建枚举类
/**
* 枚举类
*/
@Getter
@AllArgsConstructor
public enum DataOpEnum {
ADD("add","新增"),
DEL("del","删除"),
;
@Setter
private String code;
@Setter
private String value;
}
其中,@Getter/@Setter和@AllArgsConstructor是lombok包的注解,可以代替get/set和构造方法。
实现结果:
创建完枚举类,就可以创建一个测试类试一下了。
/**
* 枚举测试类
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class EnumTest {
@Test
public void test(){
String dataAddCode = DataOpEnum.ADD.getCode();
String dataAddValue = DataOpEnum.ADD.getValue();
System.out.println("枚举中,数据增加的code值为:"+dataAddCode+",数据增加的value值为:"+dataAddValue);
String dataDelCode = DataOpEnum.DEL.getCode();
String dataDelValue = DataOpEnum.DEL.getValue();
System.out.println("枚举中,数据删除的code值为:"+dataDelCode+",数据删除的value值为:"+dataDelValue);
}
}
从测试中,我们可以发现,枚举跟map非常相似。但还有一些其他需要认识的扩展:
- 枚举类中的(code,value)是默认构造,也可以自定义自己需要的其他方式,例如下面这个:
/**
* 枚举类
*/
@Getter
@AllArgsConstructor
public enum DataOpEnum {
BANANA(1,"香蕉","yellow");
;
DataOpEnum(int code, String name, String color) {
}
}
- 枚举类属于强引用,并且不可被继承
- 很多小伙伴应该会有一些疑问,比如常量不就是枚举中默认构造的一种类似方式吗,那选择使用哪一个更合适呢,这里目前还是推荐枚举,具体的分析会在专栏中的另外一篇文章中写出。