java怎么声明枚举类型
发布时间:2025-05-11 21:43:12 发布人:远客网络
一、java怎么声明枚举类型
这里我的一点小笔记你看看吧:看不明白就找找相关书籍.
1.Java 5新增,是类类型,但不能使用new
不能继承其他类,也不能作为超类,即不能扩展.但隐式继承自java.lang.Enum类,可以实现接口.
public static enum-type[] values();
public static enum-type valueOf(String st);用于for-each循环遍历枚举常量.
且可以用”==”来判断两个枚举常量是否相等.
final int ordinal()----返回常量顺序值
final int compareTo(enum-Type e)-----同一枚举中比较顺序值
final Boolean equals(enum-type e)-----同一枚举中是否相等,相当于”==”
3.在switch表达示中case语句不需也不能加入枚举的类型,否则会出错.
4.枚举是类类型,可以定义构造函数,且可以重载,同样也可定义其他的实例方法和变量,这些每一个枚举常量都有自己的一个副本.甚至可以定义静态的成员.可以实现接口.
如:public enum Answer implements DoAnswer{
Perfect(10),Good(8),Common(5),Bad(2),Terrible;//枚举常量,相当于public static Answer类型
public static int type=1;//定义一个静态成员
private int degree;//定义一个实例成员变量
private Answer(){//定义一个不带参数的构造函数,注只能为private的,默认也一样
private Answer(int d){//定义一个带参数的重载构造函数
public String getProblem(){//实现接口方法
public int getDegree(){//定义一个实例成员函数
public Answer getAnswer(){//定义一个返回自身的成员函数,每一个常量都有自己的副本
二、MyBatis中使用Java类与枚举
1前言
阅读本文您可以获得的技巧:
在Mybatis的where条件中引用Java类或枚举,而不是使用写死的数值
系统存在用户信息表t_user,其中记录性别的字段为gender,我们需要编写一个查询全部女性用户的方法
其中性别需要使用枚举,1为男性,2为女性,-1为未知
可如果直接使用上面的SQL是存在一定问题的:后期如果将gender枚举中女性的值从2修改为88,除了修改枚举本身以外,还需要修改这条SQL
那怎么能让MyBatis的中的数据一直引用Java中的枚举呢?
首先,我们创建一个拥有中文名称的枚举接口ValueNameEnum.java:
我们先把上面提到的SQL放在MyBatis的xml文件中:
@className@method(args)是调用类的静态方法,@className@field是调用类的静态属性
枚举使用的就是@枚举类@枚举值.value
有一种特殊情况,枚举是内部类,例如Gender在UserEntity中:
这种情况如果我们书写成:${@cn.houtaroy.test.entities.UserEntity.Gender@WOMAN.value},会报无法解析到枚举的错误
这时我们需要使用$,它的含义是内部类调用:UserEntity$Gender@WOMAN.value
三、java枚举类型enum用法
用法一:常量在JDK1.5之前,我们定义常量都是:public static fianl....。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法
用法二:switch JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。
用法三:向枚举中添加新方法如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且Java要求必须先定义enum实例。
用法四:覆盖枚举的方法所有的枚举都继承自java.lang.Enum类。由于Java不支持多继承,所以枚举对象不能再继承其他类。枚举类型都继承Enum
用法五:实现接口 public interface Food{
BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO