上课有什么问题?

时间:2017-09-16 07:11:17

标签: java

我是编程Java代码的初学者。我正在努力解决这门课程的错误,比如当我试图扩展课程时。 public final class SeatType extends Enum

这是我的全班:

package assignment;


public final class SeatType extends Enum
{

    public static final SeatType AISLE;
    public static final SeatType WINDOW;
    public static final SeatType MIDDLE;
    private static final SeatType $VALUES[];

    public static SeatType[] values()
    {
        return (SeatType[])$VALUES.clone();
    }

    public static SeatType valueOf(String name)
    {
        return (SeatType)Enum.valueOf(assignment/SeatType, name);
    }

    private SeatType(String s, int i)
    {
        super(s, i);
    }

    static 
    {
        AISLE = new SeatType("AISLE", 0);
        WINDOW = new SeatType("WINDOW", 1);
        MIDDLE = new SeatType("MIDDLE", 2);
        $VALUES = (new SeatType[] {
            AISLE, WINDOW, MIDDLE
        });
    }
}

编辑:

这些是错误。

  

无法将SeatType解析为变量。任务不能   解决了一个变量。 SeatType类型可能不是Enum的子类   明确。构造函数Object(String,int)未定义 -

非常感谢任何帮助:)

5 个答案:

答案 0 :(得分:3)

在Java中,它不允许您明确地扩展Enum

您可以创建如下enum

    public enum Season {
      WINTER, SPRING, SUMMER, FALL; 
    }

根据Java语言规范,每个enum都隐式final,并且是Enum的子类。所以enum已经从另一个类继承,使它成为另一个类的子类会破坏Java的单继承范式。但是,枚举可以实现interface

答案 1 :(得分:2)

为什么要延长Enum?在Java中你不能这样做。如果要创建枚举类,则应创建具有定义

的类
public enum SeatType {
    // your enum code
}

答案 2 :(得分:2)

你的课程错了,因为你正在扩展Enum课程。

您无法从Enum延伸。你声明了一个Enum类:

public enum MyEnum {
    AISLE,
    WINDOW,
    MIDDLE;
}

这将创建您的Enum。实际使用情况如下:

MyEnum.valueOf("AISLE");
MyEnum.AISLE;

答案 3 :(得分:2)

Java编译器不允许您extend ENUM类。看看this answer.

另外,请阅读this了解有关使用enum的信息。

在这种情况下,您可以创建enum之类的

public enum SeatType 
{
   WINDOW, AISLE, MIDDLE
}

答案 4 :(得分:1)

您根本不需要扩展Enum。您只需使用enum关键字来声明枚举:

enum SeatType {
    ...
}

您无需使用valuesvalueOf方法。它们继承自Enum

从它的外观来看,你的枚举似乎有2个字段 - is。您应该将它们声明为字段:

int i;
String s;

然后,编写一个带有int的构造函数和一个将参数赋给字段的字符串:

SeatType(String s, int i) {
    this.i = i;
    this.s = s;
}

然后,您可以声明枚举值:

AISLE("AISLE", 0),
MIDDLE("MIDDLE", 1),
WINDOW("WINDOW", 2)
;

所以你的整个枚举看起来像这样:

enum SeatType {
    AISLE("AISLE", 0),
    MIDDLE("MIDDLE", 1),
    WINDOW("WINDOW", 2)
    ;
    int i;
    String s;

    SeatType(String s, int i) {
        this.i = i;
        this.s = s;
    }
}