JAVA中【enum】的使用
2016-09-02 15:04
176 查看
前言
此次主要是为了完成老师布置的任务:写一个石头剪刀布的游戏,一开始使用数字代替了石头剪刀布,后来老师说用枚举可以写的更漂亮。
然后我就试了一下,在此作为记录,方便日后查看枚举是怎么用的(逃
参考书是:
《JAVA2核心技术卷1·基础知识(第七版)》
不确定有没有中文,我学校图书馆只有英文的- -
实现功能
一个玩家出拳一个AI随机出拳
判断胜负(逃
谈谈枚举类型
在前文提及的实现需求中,使用普通变量的做法是分别将“剪刀”、“石头”、“布”分别设为一个特定的值如1、2、3。又或者使用字符串存储用户的选择再进行判断。
我提及的参考书中谈到,这样的做法有可能让变量持有错误的值。(It is too easy for a variable to hold a wrong value.)
例如我现在的需求是要该整形变量只能为1、2、3。
或者只要该字符串变量为剪刀、石头、布这三个值。
如果让用户输入,用户可没那么听话,会输入错误的值,这时我们需要做一段啰里啰唆的验证。。数字还好,字符串则要做各种各样的验证,岂不是神烦?
而枚举类型的变量呢,它就让我们省心了。
你限定它只能是哪几个值,如果想存其他值进去就会报异常。
类似于你想登录一个网站,必须先注册,没注册的进不去。
一个简单的例子
import java.util.Scanner; public class BaseClass { public enum Skill { 石头, 剪刀, 布; } public static void main(String[] args) { Scanner in = new Scanner(System.in); String input = in.next(); //使用Enum类的valueOf转换。String也有valueOf方法,应该不陌生 Skill skill = Enum.valueOf(Skill.class, input); System.out.println("skill=" + skill); } }
输出结果:
剪刀 skill=剪刀 ooxx Exception in thread "main" java.lang.IllegalArgumentException: No enum constant FingerGuess.BaseClass.Skill.ooxx
可以看到,这里限定Skill类只能有3个值。
输入ooxx就会抛异常,如此就很方便的限定了一个变量所能存储的值。
再谈枚举类
public enum Skill { 石头, 剪刀, 布; }
Skill其实是一个类, 而石头、剪刀、布则是该类自身的三个实例。
如果我们给Skill的构造方法添加参数,那三个实例必然也需要传递参数。
举个例子:
import java.util.Scanner; public class SimplyDemo { public enum Skill { 石头(1), 剪刀(2), 布(3); Skill(int sign) { this.sign = sign; } public int getSign() { return sign; } private int sign; } public static void main(String[] args) { Scanner in = new Scanner(System.in); String choose = in.next(); Skill s1 = Enum.valueOf(Skill.class, choose); System.out.println(s1); System.out.println(s1.getSign()); } }
结果是
输入: 石头 输出: 石头 1
另外,这个类的内部是不会构造出新对象的,所以即使值看起来是字符串,都可以直接用==来判断两个值是否相等而不用equals。
举个例子:
Skill s1 = Enum.valueOf(Skill.class, "石头"); Skill s2 = Enum.valueOf(Skill.class, "剪刀"); System.out.println(s1 == s2); s2 = Skill.石头; System.out.println(s1 == s2);
上面代码的结果将会是
false true
以上,然后我就愉快的写作业去了。
END
相关文章推荐
- Java 小例子:如何使用 Enum
- Java 中的枚举类型(enum)怎么使用???
- java中枚举enum的使用
- Java中的Enum的使用与分析
- java使用enum自定义下标值
- Java中enum的使用
- Java中的Enum的使用与分析
- Java枚举类型enum使用详解 .
- java中Enum(枚举)的使用
- Java 1.5新特性Enum的学习和使用
- java的枚举enum的简单使用
- 高阶Java枚举类型enum使用详解
- 高阶Java枚举类型enum使用详解
- 有趣的Java - 简单使用enum实现策略模式Strategy
- 高阶Java枚举类型enum使用详解
- Java Enum 使用
- 高阶Java枚举类型enum使用详解
- Java枚举类型enum的使用原理
- Java中的Enum的使用与分析
- Java中的Enum的使用与分析