enum入门

关键字枚举enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,这是一种非常有用的功能。


enum的特性

1、创建enum时,编译器会给你生成一个相关的类,这个类继承java.lang.neum,因此定义的neum不能够继承,但可以实现接口


2、enum常亮 Position

left   ,right("右方向"),    front,   back;

这些常量即可以这样理解定义了一个类

public class Position{
public static Position right=new Position();
public static Position  left=new Position();
}

带有变量的即可以理解为带有变量的构造方法,

Position position=Position.left;

相当于返回一个position对象。


3、neum类可以含有抽象方法

但是抽象方法必须在常亮中进行定义,否则会报错

首先在neum中定义个public abstract void sayHello();

在常亮中实现

left{
public void sayHello(){
System.out.println("hello world");
}
}

4、switch语句中的enum

我想在这里是挺奇怪的,通过将java程序编译后,然后反编译看源码,会发现编译时

做了一些代码生成。

@Test
public void  testSwitch(){


Position position=Position.left;
switch (position) {
case left:
System.out.println("左方向");
break;
case right:
System.out.println("右方向");
break;
case front:
System.out.println();


default:
System.out.println("other");
break;

}
}

5、enum中的常用方法

@Test
public void testMethods(){
Position position=Position.left;
System.out.println("name方法                        "+position.name());
System.out.println("toString方法          "+position.toString());
System.out.println("ordinal方法               "+position.ordinal());
System.out.println("values方法                   "+Position.values().length);

}

输出结果

name方法                        left
toString方法          left
ordinal方法               0
values方法                   4

这些方法除了values都是继承自neum类

那么values方法来自于哪里,这个数组里存了什么值呢?

其实这可以编译后,在反编译查看源码,便知道是自动生成的方法。

这个方法里面存的便是neum中常亮,也可以说是对象。



附上代码

package jsu.java.menu;


import org.junit.Test;
enum Position{left{
public void sayHello(){
System.out.println("hello world");
}
}
,right("右方向"){
public void sayHello(){
System.out.println("hello world");
}
},front{
public void sayHello(){
System.out.println("hello world");
}
},back{
public void sayHello(){
System.out.println("hello world");
}
};
private String poi;


private Position(){

}


private Position(String poi){
this.poi=poi;
}
public String getPoi() {
return poi;
}
public void setPoi(String poi) {
this.poi = poi;
}


public abstract void sayHello();


};
public class basicEnum {

@Test
public void testObject(){
System.out.println("输出对象");
Position l=Position.left;
System.out.println("toString() 方法                             ="+l.toString());
System.out.println(l);
Position r=Position.right;
System.out.println(r);
}
@Test
public void testAssigine(){

Position r=Position.right;
String right = r.getPoi();
System.out.println(right);


}

@Test
public void  testSwitch(){


Position position=Position.left;
switch (position) {
case left:
System.out.println("左方向");
break;
case right:
System.out.println("右方向");
break;
case front:
System.out.println();


default:
System.out.println("other");
break;

}
}
@Test
public void testMethods(){
Position position=Position.left;
System.out.println("name方法                        "+position.name());
System.out.println("toString方法          "+position.toString());
System.out.println("ordinal方法               "+position.ordinal());
System.out.println("values方法                   "+Position.values().length);

}

 
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值