您当前的位置:首页 > 互联网教程

java怎么声明枚举类型

发布时间:2025-05-11 21:43:12    发布人:远客网络

java怎么声明枚举类型

一、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