简要介绍
JDK1.5引入了新的类型——枚举。
编译器生成的ValueOf方法
编译器生成的valueOf()方法需传递一个name参数,可以通过这个name参数从枚举类创建的初始对象中寻找与之对应的对象。
import java.util.Scanner;
enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLOW("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
// 重载方法
@Override
public String toString() {
return this.index + "_" + this.name;
}
}
public class Main {
public static void main(String[] args) {
Color aColor = Color.valueOf("RED");
System.out.println(aColor.toString());
Color bColor = Color.valueOf("YELLOW");
System.out.println(bColor.toString());
}
}
输出结果为:
一道例题
题目摘要
完成一个枚举类,能够实现and
和or
的逻辑,可以通过test
方法完成布尔运算。
解答
import java.util.Scanner;
enum LogicalOp {
and("and"), or("or");
// 成员变量
private String opName;
LogicalOp(String name) {
opName = name;
}
//通过枚举类的name来判断运算的方式
boolean test(boolean p1, boolean p2) {
if (opName.equals("and")) {
return p1 & p2;
} else if (opName.equals("or")) {
return p1 | p2;
}
return false;
};
}
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
boolean p1 = in.nextBoolean();
String op = in.next();
boolean p2 = in.nextBoolean();
// 读入格式 : true and false
System.out.println(LogicalOp.valueOf(op).test(p1, p2));//valueOf选择枚举类中的对象
in.close();
}
}