枚举
常量也不仅仅局限于int型,诸如char和String等也是不在少数。然而,无论使用什么样的类型,这样做都有很多的坏处。这些常量通常都是连续、有无穷多个值的量,而类似这种表示类别的量则是离散的,并且通常情况下只有有限个值。
用连续的量去表示离散量(1)代码可读性差、易用性低。(2)类型不安全。在用户去调用的时候,必须保证类型完全一致,同时取值范围也要正确。(3)耦合性高,扩展性差。因为在Java中一个枚举就是一个类,它也可以有属性和方法,并且实现接口。只是所有的枚举都继承自java.lang.Enum类,因此enum不可以再继承其他的类。
没有使用美枚举前,用传统方法创建常量并引用
创建常量的类:
public class DirectionDemo {
//有参无参构造
public String D;
public DirectionDemo() {
super();
}
public DirectionDemo(String D) {
this.D = D;
}
//提供显示类
public void show() {
}
public String getname() {
return D;
}
//子实现类,常量
public static final DirectionDemo UP = new DirectionDemo("上") {
public void show() {
System.out.println("上");
}
};
public static final DirectionDemo DOWN = new DirectionDemo("下") {
public void show() {
System.out.println("下");
}
};
public static final DirectionDemo LEFT = new DirectionDemo("左") {
public void show() {
System.out.println("左");
}
};
public static final DirectionDemo RIGHT = new DirectionDemo("右") {
public void show() {
System.out.println("右");
}
};
}
测试类:
public class DierctionTest {
public static void main(String[] args) {
//创建常量,显示
DirectionDemo d1 = DirectionDemo.UP;
String direction1 = d1.getname();
System.out.println(direction1);
DirectionDemo d2 = DirectionDemo.LEFT;
String direction2 = d2.getname();
System.out.println(direction2);
}
}
输出:
上
左
枚举类:
public enum Direction {
//创建实例,有参构造的
UP("上"),DOWN("下"),LEFT("左"),RIGHT("右");
public String name;
Direction( String name){
this.name = name;
}
public String getname(){
return name;
}
}
测试类:
public class Demo {
public static void main(String[] args) {
Direction up = Direction.UP;
System.out.println(up);
System.out.println(up.getname());
}
}
输出:
UP
上