一、枚举
- jdk1.5+
- 使用它来汇总一些来表示同类含义的常量
- 枚举是引用数据类型,枚举类型的属性,赋值只能是枚举中声明过的常量
- 注意两个方法:name() ordinal()
- 使用方式
1.在枚举中声明多个常量,用逗号分隔
枚举作为引用数据类型,只能使用声明过的常量作为数据的值
2.可以在枚举中声明私有属性、私有构造方法、getters/setters方法
构造方法是私有的,只能在枚举内部使用(定义常量值时使用)
可以将多个表示相同含义属性的不同表现形式集合到一起
二、和工具类使用的区别
1.定义一个性别工具类
package org.jgs1904.util;
/**
* @ClassName SexUtil
* @Description 性别工具类
* @Author RenYuWen
* @Since 2019/12/9 12:00
*/
public final class SexUtil {
private SexUtil(){}
public static final char MALE = '男';
public static final char FEMALE = '女';
}
2.SexEnum性别枚举
package org.jgs1904.enums;
/**
* @ClassName SexEnum
* @Description 性别枚举
* @Author RenYuWen
* @Since 2019/12/9 12:07
*/
public enum SexEnum {
男("male", 1),
女("female", 2),
其他("other", 0);
private String enName;
private int index;
private SexEnum(String enName, int index){
this.enName = enName;
this.index = index;
}
public String getEnName() {
return enName;
}
public void setEnName(String enName) {
this.enName = enName;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
3.entity
学生类
package org.jgs1904.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName Student
* @Description 学生类
* @Author RenYuWen
* @Since 2019/12/9 11:57
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
private String name;
private int age;
private char sex; // char类型
}
教师类
package org.jgs1904.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.jgs1904.enums.SexEnum;
/**
* @ClassName Teacher
* @Description TODO
* @Author RenYuWen
* @Since 2019/12/9 12:05
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Teacher {
private String name;
private int age;
private SexEnum sex; // 枚举引用
}
4.Test
使用工具类SexUtil
@Test
public void test01(){
Student stu = new Student("ryw", 18, SexUtil.MALE);
System.out.println(stu);
}
使用性别枚举SexEnum
@Test
public void test2() {
Teacher t = new Teacher("郭老师", 18, SexEnum.女);
System.out.println(t);
t.setSex(SexEnum.其他);
System.out.println(t);
SexEnum sex = t.getSex();
System.out.println(sex);
SexEnum sex1 = SexEnum.其他;
String sexStr = sex1.toString();
System.out.println(sexStr);
String name = sex1.name(); // 得到枚举的名称
System.out.println(name);
int ordinal = sex1.ordinal(); // 得到枚举常量值的次序
System.out.println(ordinal);
}
使用工具类和枚举的区别在于,工具类受限于属性的类型,而枚举则不受限制。
三、Demo
public class Demo02 {
@Test
public void test01(){
Student stu = new Student("ryw", 18, SexUtil.MALE);
System.out.println(stu);
}
@Test
public void test02(){
Teacher tea = new Teacher("fang", 20, SexEnum.男);
System.out.println(tea);
tea.setSex(SexEnum.其他);
System.out.println(tea);
SexEnum sex = tea.getSex();
System.out.println(sex);
SexEnum sexEnum = SexEnum.其他;
String sexStr = sexEnum.toString();
System.out.println(sexStr);
String name = sexEnum.name(); // 得到枚举的名称
System.out.println(name);
int ordinal = sexEnum.ordinal(); // 得到枚举常量值的次序
System.out.println(ordinal);
}
@Test
public void test03(){
Teacher tea = new Teacher("wu", 30, SexEnum.男);
SexEnum sex = tea.getSex();
System.out.println(sex); // 男
String name = sex.name();
System.out.println(name); // 男
int ordinal = sex.ordinal();
System.out.println(ordinal); // 0
String enName = sex.getEnName();
System.out.println(enName); // male
int index = sex.getIndex();
System.out.println(index); // 1
}
@Test
public void test04(){
System.out.println(LoginResultEnum.SUCCESS.getContent());
}
@Test
public void test05(){
// values()
int ordinal = 1;
SexEnum[] sexes = SexEnum.values();
for (SexEnum sex : sexes) {
if (sex.ordinal() == ordinal){
System.out.println(sex);
}
}
// valueOf(String value)
SexEnum sex = SexEnum.valueOf("男");
System.out.println(sex);
}
}
来源:CSDN
作者:IMYEDLL
链接:https://blog.csdn.net/weixin_44059002/article/details/103458290