Java 枚举
Posted 王睿丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 枚举相关的知识,希望对你有一定的参考价值。
文章目录
1、简单实现枚举 并与 静态内部类进行对比
/**
* 简单实现枚举 并与 静态内部类进行对比
* @author wangrui
*
*/
//枚举类
enum Color{
//枚举类的元素可以不写分号,如果枚举类中还包含其他成员变量、成员方法,则需要加上 ;
RED,GREEN,BLUE
}
public class Main1 {
public static void main(String[] args) {
//枚举实现颜色
Color c = Color.RED;
System.out.println(c);
//静态内部类实现颜色
System.out.println(Colorm.RED);
}
}
class Colorm{
public static String RED="RED";
public static String GREEN="GREEN";
public static String BLUE="BLUE";
}
结果
RED
RED
2、枚举类声明在类的内部
/**
* 1、枚举类可以声明在类的内部
* 2、枚举类转换为类
* @author wangrui
*
*/
public class Main2 {
//枚举内部类
enum Color2
{
RED, GREEN, BLUE;
}
/*
每个枚举都是通过 Class 在内部实现的,且所有的枚举值都是 public static final 的。
以上的枚举类 Color 转化在内部类实现
static class Color{
public static final Color RED = new Color();
public static final Color BLUE = new Color();
public static final Color GREEN = new Color();
} */
public static void main(String[] args) {
Color2 c = Color2.RED;
System.out.println(c);
}
}
结果
RED
3、迭代枚举元素
/**
* 迭代枚举元素
* @author wangrui
*
*/
public class Main3 {
public static void main(String[] args) {
//迭代枚举元素
for(Color3 myEnum:Color3.values()) {
System.out.println(myEnum);
}
}
}
//枚举类
enum Color3{
RED,GREEN,BLUE;
}
结果
RED
GREEN
BLUE
4、枚举与switch 配合
/**
* 枚举与switch 配合
* @author wangrui
*
*/
enum Color4{
RED,GREEN,BLUE
}
public class Main4 {
public static void main(String[] args) {
Color4 myEnum = Color4.GREEN;
//疑问:为什么枚举类型的元素可以直接在不同类中直接使用,如下面的:case RED
switch(myEnum) {
case RED: System.out.println("红色"); break;
case GREEN: System.out.println("绿色"); break;
case BLUE: System.out.println("蓝色"); break;
}
}
}
结果
绿色
5、values(), ordinal() 和 valueOf() 方法
/**
* values(), ordinal() 和 valueOf() 方法
* @author wangrui
*
*/
public class Main5 {
public static void main(String[] args) {
//获取枚举中所有的元素
Color5[] arr = Color5.values();
//迭代枚举
for(Color5 c:arr) {
//获取每一个元素及它的索引
System.out.println(c + "---它的索引是:" + c.ordinal());
}
//使用 valueOf() 返回枚举常量,不存在的会报错 IllegalArgumentException
System.out.println(Color5.valueOf("RED"));
// System.out.println(Color5.valueOf("BLACK"));
}
}
enum Color5{
RED,GREEN,BLUE
}
结果
RED---它的索引是:0
GREEN---它的索引是:1
BLUE---它的索引是:2
RED
6、枚举类成员
/**
* 枚举类成员
* @author wangrui
*
*/
//枚举类
enum Color6{
RED,GREEN,BLUE,WHILE; //△这里下面还有其他枚举成员,所以需要加上分号
//△构造函数只能使用 private 访问修饰符,外部无法调用
private Color6() {
System.out.println("构造方法调用处:" + this.toString());
}
public void colorInfo() {
System.out.println("通用色");
}
}
public class Main6 {
public static void main(String[] args) {
//结论:枚举类在实例化的时候,会自动调用内部构造方法,并且会把所有元素遍历一遍
Color6 c = Color6.RED;
//打印c的颜色
System.out.println(c);
//打印枚举类颜色信息
c.colorInfo();
}
}
结果
构造方法调用处:RED
构造方法调用处:GREEN
构造方法调用处:BLUE
构造方法调用处:WHILE
RED
通用色
以上是关于Java 枚举的主要内容,如果未能解决你的问题,请参考以下文章