ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java枚举类需要注意的要点

2021-04-17 19:03:59  阅读:199  来源: 互联网

标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有