本文目录一览:
java枚举类型
枚举是一种特殊的数据类型,和类(class)是同一个级别。例如定义一个类 Test
,会有一个源文件 Test.java
,编译后会生成 Test.class
。同样地,定义一个枚举类型 Myenum
,编译后也会生成 Myenum.class
。
作用:存储一系列数据,保证数据的有效取值范围。
通常用到的地方是传递接口参数时,为了保证传递一个合适的值,而不需要额外验证这个值是否合法。这里说的“接口”不是 interface
,而是指开发中不同层之间的调用。
Java中vector集合枚举,和枚举类型enum有什么区别吗?
现在枚举已经不是主流用法了,但还是有必要了解一下。枚举不是类,可以看作是一个集合。例如你代码中的 weekday
,现在大部分程序员用枚举来定义常量,比如下面这段代码:
enum Signal {
GREEN, YELLOW, RED
}
public class TrafficLight {
Signal color = Signal.RED;
public void change() {
switch (color) {
case RED:
color = Signal.GREEN;
break;
case YELLOW:
color = Signal.RED;
break;
case GREEN:
color = Signal.YELLOW;
break;
}
}
}
上面的枚举主要用于定义常量。
Java枚举类型怎么使用
枚举(enum)类型是 Java 5 新增的特性,它是一种新的类型,允许用常量来表示特定的数据片段,而且全部都以类型安全的形式来表示。
1、常量的使用
在 JDK1.5 之前,我们定义常量的方式通常是:
public static final ...
有了枚举之后,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。 总结:
- 枚举的本质是类。在没有枚举之前,我们也可以通过 Java 的基本编程手段来实现类似枚举的功能。
- 枚举屏蔽了枚举值的类型信息,不像
public static final
定义变量时必须指定类型。 - 枚举是用来构建常量数据结构的模板,这个模板是可以扩展的。
- 枚举的使用增强了程序的健壮性。例如在引用一个不存在的枚举值时,编译器会报错。
- 枚举的更多用法还需要在开发中不断探索。Java5、Java6 增加了不少新特性,技术在升级,作为 Java 程序员也需要不断学习,否则别人用新特性写的代码你看不懂,那会很郁闷。
2、枚举在 Java 家族中只占了很小的一块比重
因此在项目中使用枚举的地方不是很多。毕竟一个项目是很多人开发维护的,使用陌生的东西会给其他同事造成阅读困难。所以常量大都是用 public static final
来定义的。
如何使用java中的枚举类
static final
通常跟的是一个 int
类型的常数,所以有时候可以用 int
型代替枚举。
在有些时候需要输出这个枚举量的名字(比如 January
),上面的方法输出的是 int
值,用类的话可以把名字一起输出。
总的来说:
- 前者(
static final int
)消耗资源比较少。 - 后者(枚举)更符合枚举的定义。
枚举的确是一个类。在 JDK1.4 及以前,没有
enum
这个关键字,那时候都是使用类来模拟的。在《Java编程思想》第三版的章节 8.1.3 中介绍了一种写法。JDK5 以后引入了enum
,本质上就是一个类,所以可以被继承。总体思路和第三版中的写法类似,只是换了个名字(详见《Java编程思想》第四版第19章)。
补充:早期的枚举写法示例
public final class Month {
private String name;
private Month(String nm) {
name = nm;
}
public String toString() {
return name;
}
public static final Month
JAN = new Month("January"),
FEB = new Month("February"),
MAR = new Month("March"),
APR = new Month("April"),
MAY = new Month("May"),
JUN = new Month("June"),
JUL = new Month("July"),
AUG = new Month("August"),
SEP = new Month("September"),
OCT = new Month("October"),
NOV = new Month("November"),
DEC = new Month("December");
public static final Month month[] = {
JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
};
public static final Month number(int ord) {
return month[ord - 1];
}
// main
public static void main(String args[]) {
Month m = Month.JAN;
System.out.println(m);
m = Month.number(12);
System.out.println(m);
System.out.println(m == Month.DEC);
System.out.println(m.equals(Month.DEC));
System.out.println(Month.month[3]);
System.out.println(Month.APR);
}
}
java什么是枚举类型
你可以理解为枚举也是一个类,但是这个类只有在内部声明的几个对象,不可新建对象。当你想使用枚举类的对象时,就像使用类的静态资源一样。
怎么使用java中的枚举方法
枚举可以理解为一个有限值的集合。一个枚举类型的变量,它的值只可能是类型值中的一个。 例如:
Drection drection; // 此类型的变量
变量的值应该是类型里边所列的值中的一个。如果单写 WEST
,根本不知道它是什么,所以要加类名限定,即 Drection.WEST
。于是,对一个枚举变量赋值的样子就像这样:
if (drection == Drection.WEST) return true;
String west = "WEST";
drection.toString().equals(west) return true;