标签:Direction Java Color System println 枚举 要点 out
1.为什么枚举类中的构造函数自动默认为private,并且不能改变?枚举中的构造函数是怎么运行的?
public class RegExpTest { public static void main(String[] args) { Color c1=Color.BLUE; //要注意的是当创建了Color类对象的时候,这个枚举类中的所有实例都会调用构造函数,因此也就会有三个输出出现 // System.out.println(c1); // c1.colorInfo(); } } enum Color { RED, GREEN, BLUE; //它们本身就是枚举类Color的实例 // 构造函数 private Color() //之所以枚举类的构造函数是被private关键字修饰,是因为调用构造函数的对象是在Color之中,也就是RED, GREEN, BLUE { System.out.println("Constructor called for : " + this.toString()); } public void colorInfo() { System.out.println("Universal Color"); } }
运行结果是:
Constructor called for : RED Constructor called for : GREEN Constructor called for : BLUE
2.为什么枚举类型不能使用new来创建实例?
public enum Direction { FRONT, BEHIND, LEFT, RIGHT("红色"); } Direction d = Direction.FRONT;
不能使用new来创建枚举类的对象,因为枚举类中的实例就是类中的枚举项,所以在类外只能使用类名.枚举项。
3.枚举类在switch()中的用法:
在switch中,不能使用枚举类名称,例如:“case Direction.FRONT:”这是错误的,编译器会根据switch中d的类型来判定每个枚举类型,在case中必须直接给出与d相同类型的枚举选项,而不能再有类型。
Direction d = Direction.FRONT; switch(d) { case FRONT: System.out.println("前面");break; case BEHIND:System.out.println("后面");break; case LEFT: System.out.println("左面");break; case RIGHT: System.out.println("右面");break; default:System.out.println("错误的方向"); } Direction d1 = d; System.out.println(d1);
标签:Direction,Java,Color,System,println,枚举,要点,out 来源: https://www.cnblogs.com/junFignting/p/14671771.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。