首页IT科技java枚举类型的用法(java基础-枚举类型)

java枚举类型的用法(java基础-枚举类型)

时间2025-06-14 23:05:06分类IT科技浏览4452
导读:以下为本人的学习笔记...

以下为本人的学习笔记

1.认识枚举

枚举不是类              ,是跟类                     ,接口同级别的类型       ,

枚举就是限制某个类型的变量的取值只能为诺干个固定值中的一个       ,否则编译器就会报错

枚举可以让编译器在编译时就可以控制源程序赋给的非法值                     ,使用普通变量的方式在开发阶段无法实现这一目标

在JDK1.5之后              ,使用关键字enum定义一种新的类型       ,称为枚举类型                     ,枚举是列举出来              ,选其中的一个

枚举的本质是一个继承了Enum类的子类,JVM编译器把枚举编译后生成一个final class

2.枚举的关键字和方法

关键字:enum ,跟class                     ,interface类似

public class EnumDemo{ public static final int RED = 0x1; public static final int GREEN = 0x2; public static final int BLUE = 0x3; //public int color;//变量                     ,可以随意赋值 public Color colorEnum;//Color是一个枚举类型 @Test public void test1(){ //调用时用枚举类型名.对象名 colorEnum = Color.RED; colorEnum = Color.BLUE; colorEnum = Color.GREEN; System.out.println(colorEnum);//输出(字符串):GREEN //打印colorEnum实际上是打印colorEnum.name() System.out.println(colorEnum.name());//输出:GREEN System.out.println(colorEnum.ordinal());//ordinal序号,编号              。输出:1 System.out.println(colorEnum.toString());//输出:GREEN Color[] values = Color.values();//values()获取Color所有的值 System.out.println( Arrays.toString(values));//输出:[ RED,GREEN,BLUE] } } ​ //定义一个枚举类型 public enum Color{ //让color必须是RED               ,GREEN                     ,BLUE中的一个值 //下面三个       ,每一个都代表枚举的一个实例化对象              ,枚举类型的对象都是从枚举类型内部定义的                     ,外部不能定义枚举对象 RED,GREEN,BLUE; //写上一个对象       ,内部自动会调用Enum(String name       ,int ordinal)                     ,此构造方法不能被外部直接调用              ,只能被其子类访问       ,此构造方法为自动调用 } 3.集合对枚举的支持

在JDK1.5之后                     ,对于Set和Map接口而言又增加了两个新的子类:EnumSet(抽象类)              、EnumMap两个类(很少用)

@Test public void test3(){ EnumSet<Color> set = EnumSet.allOf(Color.class); for(Color c :set ){ System.out.println(c);//输出枚举类型Color的所有实例化对象 } //key用枚举类型元素来表示 EnumMap<Color,String> map = new EnumMap<>(Color.class); map.put(Color.RED,"red"); map.put(Color.GREEn,"green"); map.put(Color.BLUE,"blue"); ​ } 4.带构造方法的枚举

通过对象去调用构造方法(但很少使用)

public enum Color{ //枚举对象后面没有加括号              ,表示调用无参构造方法 //枚举对象后面有加括号,表示调用有参构造方法 RED(10),GREEN(20),BLUE; //可以定义属性 private int color; private Color(){ System.out.println("无参构造器"); ​ } private Color(int color){ this.color = color; System.out.println("有参构造器"); } } @Test public void test4(){ System.out.println(Color.RED);//第一次使用枚举                     ,枚举内部的三个对象的构造方法都会被调用 ​ } 5.让枚举实现接口 public interface Info{ public int getColor(); } public enum Color{ RED(10),GREEN(20),BLUE; private int color; private Color(){ System.out.println("无参构造器"); } private Color(int color){ this.color = color; System.out.println("有参构造器"); } public int getColor(){ return color; } } public void test5(){ System.out.println(Color.RED.getColor()); } 6.在枚举中定义抽象方法 public enum Color{ RED{ @Override publci String getColor2(){ return "red"; } },GREEN{ @Override publci String getColor2(){ return "green"; } },BLUE{ @Override publci String getColor2(){ return "blue"; } }; public abstract String getColor2(); }

使用枚举实现单例设计模式

public enum Singleton{ SINGLETON; publci void method(){ System.out.println("method"); } ​ } //使用枚举实现单例设计模式 @Test public void test5(){ Singleton.SINGLETON.method(); }

最后                     ,枚举更符合我们设计的要求,但是枚举总归是一种类型              ,因此它占用的内存空间会更大一些                     。

所以如果内存空间满足要求的话会用枚举                     ,不然一般建议使用常量       ,而且使用常量的效率会更快一些       。

■免责申明

⒈ 本站是纯粹个人学习网站

              ,与朋友交流共赏                     ,不存在任何商业目的       。

⒉ 本站利用了部分网络资源       ,版权归原作者及网站所有       ,如果您对本站所载文章及作品版权的归属存有异议                     ,请立即通知我们              ,我们将在第一时间予以删除       ,同时向你表示歉意!

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
thecure乐队(The C Book — Table of Contents) cookie和session的联系和区别(cookie和localstorge、sessionStorge的区别)