解决方案 »

  1.   

    枚举类型在C#或C++,java,VB等一些计算机编程语言中是一种基本数据类型而不是构造数据类型。
    看书要仔细哦!其实这个百度一秒钟就出来了,传送门如下:
    http://baike.baidu.com/link?url=hQ9uc5cgUW13bAgFFUPdH-Kh1hn_uudX55u8AszY-eD8d-GjhDRD4Od2ShkE_7MJa8_yq-7O8QUAde2PvFTTZq
      

  2.   

    [/codepublic enum Fruit {
    APPLE,PEAR,ORANGE
    }
    举个例子,Java通过enum关键字构建枚举类型,但其内在实现帮我们做了一系列的工作。
    首先,Fruit就是一个Class,并继承自java.lang.Enum类,所以Enum类中实现的ordinal()和name()方法在枚举类型中可以调用。
    然后,不能new Fruit是因为Java帮你构建枚举类型的时候屏蔽了Fruit的构造方法,即相当于声明了一个private的构造方法
    而你的Fruit类中的APPLE、PEAR、ORANGE其实就相当于这个Fruit类的三个实例,他们是三个不可变对象,存在唯一实例。
    其实Java帮我们做的一系列工作以后差不多就是这样:
    [code=java]public class Fruit extends Enum{
    // APPLE,PEAR,ORANGE
    public static final Fruit APPLE = new Fruit("APPLE", 0);
    public static final Fruit PEAR = new Fruit("PEAR", 1);
    public static final Fruit ORANGE = new Fruit("ORANGE", 2);
    }
    这里的new Fruit()方法调用了Enum类的构造方法
    public class Fruit extends Enum{
    // APPLE,PEAR,ORANGE
    public static final Fruit APPLE = new Fruit("APPLE", 0);
    public static final Fruit PEAR = new Fruit("PEAR", 1);
    public static final Fruit ORANGE = new Fruit("ORANGE", 2);
    private Fruit() {

    }
    }
    只不过由于泛型的限制Java不允许我们显式的声明一个类继承自Enum,它自动帮我们做了这一系列工作。
    所以你不能new一个Fruit类,只能向里面加实例
      

  3.   

    额上面的写乱了
    public enum Fruit {
        APPLE,PEAR,ORANGE
    }
    举个例子,Java通过enum关键字构建枚举类型,但其内在实现帮我们做了一系列的工作。
    首先,Fruit就是一个Class,并继承自java.lang.Enum类,所以Enum类中实现的ordinal()和name()方法在枚举类型中可以调用。
    然后,不能new Fruit是因为Java帮你构建枚举类型的时候屏蔽了Fruit的构造方法,即相当于声明了一个private的构造方法
    而你的Fruit类中的APPLE、PEAR、ORANGE其实就相当于这个Fruit类的三个实例,他们是三个不可变对象,存在唯一实例。
    其实Java帮我们做的一系列工作以后差不多就是这样:public class Fruit extends Enum{
    // APPLE,PEAR,ORANGE
    public static final Fruit APPLE = new Fruit("APPLE", 0);
    public static final Fruit PEAR = new Fruit("PEAR", 1);
    public static final Fruit ORANGE = new Fruit("ORANGE", 2);
    private Fruit() {

    }
    }这里的new Fruit()方法调用了Enum类的构造方法    protected Enum(String name, int ordinal) {
            this.name = name;
            this.ordinal = ordinal;
        }
    只不过由于泛型的限制Java不允许我们显式的声明一个类继承自Enum,它自动帮我们做了这一系列工作。
    所以你不能new一个Fruit类,只能向里面加实例。