枚举的一些特殊用法
定义一个基本的枚举类型
public enum Color { RED(10), //每一个枚举都是枚举类型的一个实例 GREEN(20), BLUE(); Color() {} //枚举的构造方法必须是私有的,可以不写默认私有 private int color; Color(int color) { this.color = color; System.out.println(color); } }
枚举可以实现接口
public interface Info { public int getColor(); }
public enum Color implements Info{ RED(10), GREEN(20) , BLUE(); Color() {} private int color; Color(int color) { this.color = color; System.out.println(color); } @Override public int getColor() { return color; } }
@Test public void test3() { System.out.println(Color.RED.getColor()); }
//
10 //构造方法打印的
20 //构造方法打印的
10 //getColor方法执行结果
枚举可以重写抽象方法
public enum Color implements Info{ RED(10) {//每个实例单独实现抽象方法 public String getColor2() { return "red"; } }, GREEN(20) { public String getColor2() { return "green"; } }, BLUE() { public String getColor2() { return "blue"; } }; Color() {} private int color; Color(int color) { this.color = color; System.out.println(color); } @Override public int getColor() { return color; } public abstract String getColor2();//抽象方法写在枚举类中 }
@Test public void test3() { System.out.println(Color.RED.getColor2()); }
//red
枚举的一些基本属性
@Test public void test1() { color = Color.RED; System.out.println(color); System.out.println(color.name()); System.out.println(color.ordinal());//当前枚举在枚举类中的位置 System.out.println(color.toString()); Color[] values = Color.values(); System.out.println(Arrays.toString(values)); }
//
RED
RED
0
RED
[RED, GREEN, BLUE]
枚举中的集合
@Test public void test2() { EnumSet<Color> set = EnumSet.allOf(Color.class);//枚举set set.forEach(item -> { System.out.println(item); }); EnumMap<Color, String> enumMap = new EnumMap<Color, String>(Color.class);//枚举map enumMap.put(Color.RED, "red"); enumMap.put(Color.BLUE, "blue"); enumMap.put(Color.GREEN, "green"); enumMap.forEach((k,v) -> { System.out.println(k +"->" +v); }); }
//
RED
GREEN
BLUE
RED->red
GREEN->green
BLUE->blue
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!