- public class Main{
- public static void main(String[] args) {
- TraLight r = TraLight.RED;
- TraLight t = r.Nextlight();
- System.out.println(t);
- System.out.println(r);
- }
- }
- //输出:
- green color
- RED RED RED
- enum TraLight {
- RED ("red color"){//括号里是使用构造方法时传递的实参
- public TraLight Nextlight() {
- return GREEN;
- }
- public String toString(){//再次重写toString方法。
- return "RED RED RED";
- }
- },
- GREEN ("green color"){
- public TraLight Nextlight() {
- return YELLOW;
- }
- },
- YELLOW ("yellow color"){
- public TraLight Nextlight() {
- return RED;
- }
- };
- private TraLight(String s){//构造方法,必须是私有的,只能内部调用,当在外部使用TraLigh r = TraLighr.RED;时,内部会执行此构造方法,并传进相应的参数。
- this.s = s;
- }
- public String toString(){//重写toString方法
- return s;
- }
- public abstract TraLight Nextlight();//此为抽象方法,子类必须实现
- private String s;
- }
- //enum是特殊的class,实际上enum声明定义的类型就是一个类。 而这些类都是类库中Enum类的子类(java.lang.Enum<E>)。它们继承了这个Enum中的许多有用的方法。代码编译之后成了一个字节码文件:TraLight.class。
- //下面是其字节码文件,可以看出来其本身就是一个抽象类。
- Compiled from "TraLight.java"
- abstract class TraLight extends java.lang.Enum{
- public static final TraLight RED;//TraLight类型
- public static final TraLight GREEN;
- public static final TraLight YELLOW;
- public static TraLight[] values();
- public static TraLight valueOf(java.lang.String);
- public java.lang.String toString();
- public abstract TraLight Nextlight();
- TraLight(java.lang.String, int, java.lang.String, TraLight$1);
- static {};
- }
- //枚举值RED\GREEN\YELLOW是枚举类TraLight的一个子类,所以必须实现其抽象方法。
复制代码 |