enum是java关键字吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了enum是java关键字吗?相关的知识,希望对你有一定的参考价值。
enum是Java的关键字,Java的关键字如下:abstract 表明类或者成员方法具有抽象属性
assert 用来进行程序调试
boolean 基本数据类型之一,布尔类型
break 提前跳出一个块
byte 基本数据类型之一,字节类型
case 用在switch语句之中,表面其中的一个分支
catch 用在异常处理中,用来捕捉异常
char 基本数据类型之一,字符类型
class 类
const 保留关键字,没有具体含义
continue 回到一个块的开始处
default 默认,例如,用在switch语句中,表明一个默认的分支
do 用在do-while循环结构中
double 基本数据类型之一,双精度浮点数类型
else 用在条件语句中,表明当条件不成立时的分支
enum 枚举
extends 表明一个类型是另一个类型的子类型,这里常见的类型有类和接口
final 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变
finally 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块
float 基本数据类型之一,单精度浮点数类型
for 一种循环结构的引导词
goto 保留关键字,没有具体含义
if 条件语句的引导词
implements 表明一个类实现了给定的接口
import 表明要访问指定的类或包
instanceof 用来测试一个对象是否是指定类型的实例对象
int 基本数据类型之一,整数类型
interface 接口
long 基本数据类型之一,长整数类型
native 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
new 用来创建新实例对象
package 包
private 一种访问控制方式:私用模式
protected 一种访问控制方式:保护模式
public 一种访问控制方式:共用模式
return 从成员方法中返回数据
short 基本数据类型之一,短整数类型
static 表明具有静态属性
strictfp 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范
super 表明当前对象的父类型的引用或者父类型的构造方法
switch 分支语句结构的引导词
sychronized 表明一段代码需要同步执行
this 指向当前实例对象的引用
throw 抛出一个异常
throws 声明在当前定义的成员方法中所有需要抛出的异常
transient 声明不用序列化的成员域
try 尝试一个可能抛出异常的程序块
void 声明当前成员方法没有返回值
volatile 表明两个或者多个变量必须同步地发生变化
while 用在循环结构中 参考技术A 在Java1.5中增加了enum类型,使用enum类型的一些注意点
注意点:
1。所有创建的枚举类型都扩展于 java.lang.Enum. Enum 是在J2SE 5.0 里定义的一个新类, 它本身不是枚举类型.在创建枚举类型时,必须用enum 关键字,不能直接地定义一个继承Enum的类来创建一个枚举类型,尽管所有创建的枚举类型实际上都是Enum 的子类.
2。枚举类型里定义的每一个值都是枚举类型的一个实例,缺省时都将映射到Enum(String name, int ordinal) 构造函数中.枚举类型可以使用参数为定义一些自己的构造函数。
另外要强调的两点:
一是这些枚举类型的构造函数都是私有的.它是不能被其它的类或者其它的枚举类型调用的. 而且这个私有修饰符是由编译器自动加的,如果我们定义这些构造函数时,在前面加上public 修饰符, 就会导致编译错误,
二是变量定义必须在枚举类型值定义之后
3。枚举类型每一个值都是public, static and final的.也就是说,这些值是唯一的而且一旦定义了是不能被重写或修改.而且尽管在枚举类型每一个值声明时没有出现static关键字,实际上值都是静态的, 而且我们不能在值前面加上static, public,final 修饰符
4。Switch语句里使用枚举类型时,一定不能在每一个枚举类型值的前面加上枚举类型的类名(case后面的值),否则编译器就会报错
5。在J2SE 5.0 的java.util 程序包中提供两个新类:EnumMap 和 EnumSet,这两个类与枚举类型的结合应用可使以前非常繁琐的程序变得简单方便.EnumMap 类提供了java.util.Map 接口的一个特殊实现,该接口中的键(key)是一个枚举类型
6。特定于常量的类主体 :
提到枚举类型可以定义自己的函数,其实更进一步,枚举类型的每一个值都可以实现枚举类型里定义的抽象函数
------------------------------------------
enum Size
Small(0.8),
Medium(1.0),
Large(1.2);
private double pricingFactor; // 符合2.2的要求,变量定义必须在枚举类型值定义之后
Size(double p)
pricingFactor = p;
public double getPricingFactor()
return pricingFactor;
---------------------------------------------
enum的预定义方法
完整的方法集合(E 表示枚举类型自身):
* public int compareTo(E e)
* public boolean equals(Object o)
* public final Class<E> getDeclaringClass()
* public int hashCode()
* public String name()
* public int ordinal()
* public String toString()
* public static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)
一些方法看起来很熟悉,而其他一些方法则是特定于 Enum 类的。
compareTo ()、equals() 和 hashCode() 方法是典型的 Object 和 Comparable 方法,其中,compareTo() 报告声明元素的顺序。name() 和 ordinal() 方法返回构造函数参数,而 toString() 返回名称。
getDeclaringClass() 和 valueOf() 方法需要稍多一些解释。getDeclaringClass() 方法类似于 Object 的 getClass() 方法,但它没必要返回相同的类。根据这个方法的 Javadoc 的说明:对于具有特定于常量的类主体的 enum 常量,该方法返回的值可能不同于 Object.getClass() 方法返回的值。本回答被提问者采纳 参考技术B 是java关键字,java中的枚举类型 但不常用。。。。 参考技术C 在新版本JDK1.5中是关键字 参考技术D 是java关键字,java中的枚举类型。
详细介绍:
http://www.cwbc.com.cn/Article/ShowArticle.asp?ArticleID=8872
初识Java Enum
enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 java.lang 包中。
enum是关键字,感觉它跟class、interface是并列的,并且不能跟final,abstract同时使用,因为它默认是final类型了。
enum类中的每个enum元素都是其类的static final实例
enum是枚举类型,定义为”staitc final“的,也就是说不能被重写和继承,在初始化过程中即进行赋值,并且不能被改变
enum修饰的类不能被其他类继承,也不能继承其他类。原因在于,enum默认继承了Enum类,所以不能多重继承,而被enum修饰的类默认为final的,所以也不能衍生出子类。
最简单的例子
1 enum EnumData {
2 MON, TUE, WED, THU, FRI, SAT, SUN;
3 }
4 public class EnumTest {
5 public static void main(String[] args) {
6 System.out.println(EnumData.MON);
7 for (EnumData e : EnumData.values()) {
8 System.out.println(e.toString());
9 }
10 }
11 }
语法(定义)
创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum 类的子类(java.lang.Enum 是一个抽象类)。枚举类型符合通用模式 Class Enum<E extends Enum<E>>,而 E 表示枚举类型的名称。枚举类型的每一个值都将映射到 protected Enum(String name, int ordinal) 构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数设置表示了此设置被创建的顺序。
public enum EnumTest {
MON, TUE, WED, THU, FRI, SAT, SUN;
}
这段代码实际上调用了7次 Enum(String name, int ordinal):
new Enum<EnumTest>("MON",0);
new Enum<EnumTest>("TUE",1);
new Enum<EnumTest>("WED",2);
... ...
enum 对象的常用方法介绍
int compareTo(E o)
比较此枚举与指定对象的顺序。
Class<E> getDeclaringClass()
返回与此枚举常量的枚举类型相对应的 Class 对象。
String name()
返回此枚举常量的名称,在其枚举声明中对其进行声明。
int ordinal()
返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
String toString()
返回枚举常量的名称,它包含在声明中。
static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)
返回带指定名称的指定枚举类型的枚举常量。
参考链接:
[1]http://www.cnblogs.com/hyl8218/p/5088287.html
[2]http://blog.csdn.net/u013248535/article/details/52918940
详细使用,还是参考链接里吧!
添加一份我常用的模板吧
/** * 转码状态 * * @author jiashubing * @since 2019/1/18 */ public enum TranscodeStatusEnum { FAIL("转码失败", (short) -1), WAIT("排队等待", (short) 0), COMMIT("提交作业", (short) 1), SUCCESS("完成转码", (short) 2); private String name; private short index; // 构造方法 TranscodeStatusEnum(String name, short index) { this.name = name; this.index = index; } //覆盖方法 @Override public String toString() { return this.index + "_" + this.name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public short getIndex() { return index; } public void setIndex(short index) { this.index = index; } }
以上是关于enum是java关键字吗?的主要内容,如果未能解决你的问题,请参考以下文章