1.通常我们使用普通方法去创建常量:
// 测试类
public class Test {
public static void main(String[] args){
Direction1 d1 = Direction1.FRONT;
System.out.println(d1);
System.out.println("------------------------");
Direction2 d2 = Direction2.FRONT;
System.out.println(d2);
System.out.println(d2.getName());
System.out.println("------------------------");
Direction3 d3 = Direction3.FRONT;
System.out.println(d3);
System.out.println(d3.getName());
d3.show();
}
}
// 方式1
public class Direction1 {
public Direction1(){
}
public static final Direction1 FRONT = new Direction1() ;
public static final Direction1 BEHIND = new Direction1() ;
public static final Direction1 LEFT = new Direction1() ;
public static final Direction1 RIGHT = new Direction1() ;
}
// 方式2
public class Direction2 {
//创建几个实例对象
public static final Direction2 FRONT = new Direction2("前") ;
public static final Direction2 BEHIND = new Direction2("后") ;
public static final Direction2 LEFT = new Direction2("左") ;
public static final Direction2 RIGHT = new Direction2("右") ;
//私有化,目的是为了不让外界创建对象
private Direction2(){
}
private String name ;
public Direction2(String name) {
this.name = name ;
}
public String getName(){
return name ;
}
}
// 方式3
public abstract class Direction3 {
//抽象方法
public abstract void show() ;
// 提供它子实现类(匿名内部类)
public static final Direction3 FRONT = new Direction3("前") {
public void show() {
System.out.println("前");
}
};
public static final Direction3 BEHIND = new Direction3("后") {
public void show() {
System.out.println("后");
}
};
public static final Direction3 LEFT = new Direction3("左") {
public void show() {
System.out.println("左");
}
};
public static final Direction3 RIGHT = new Direction3("右") {
public void show() {
System.out.println("右");
}
};
private Direction3(){
}
private String name ;
public Direction3(String name) {
this.name = name ;
}
public String getName(){
return name ;
}
}
结果:
2.使用枚举的方法创建常量:
// 测试类
public class Test {
public static void main(String[] args){
Direction1 d1 = Direction1.BEHIND;
System.out.println(d1);
System.out.println("--------------------");
Direction2 d2 = Direction2.BEHIND;
System.out.println(d2);
System.out.println(d2.getName());
System.out.println("--------------------");
Direction3 d3 = Direction3.BEHIND;
System.out.println(d3);
d3.show();
}
}
// 方法1
public enum Direction1 {
FRONT,BEHIND,LEFT,RIGHT;
}
// 方式2
public enum Direction2 {
FRONG("前"),BEHIND("后"),LEFT("左"),RIGHT("右");
private String name ;
private Direction2(String name){
this.name = name ;
}
public String getName(){
return name ;
}
}
// 方式3
public enum Direction3 {
FRONT("前"){
@Override
public void show() {
System.out.println("前");
}
}
,
BEHIND("后"){
@Override
public void show() {
System.out.println("后");
}
}
,
LEFT("左"){
@Override
public void show() {
System.out.println("左");
}
}
,
RIGHT("右"){
@Override
public void show() {
System.out.println("右");
}
}
;
//抽象方法
public abstract void show() ;
private String name;
private Direction3(String name){
this.name = name;
}
}