2017-09-16 66 views
0

当谈到编程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 。构造函数对象(字符串,整数)是不确定的 -

任何帮助是非常赞赏:)

+1

究竟是什么错误?你的编译器说什么? – gefei

+0

这些是错误。 SeatType不能解析为变量。赋值无法解析为变量\t。SeatType类型可能不会显式继承Enum的子类。构造函数Object(String,int)未定义 – user123123123

回答

1

你为什么要延长Enum?在Java中,你不能这样做。如果你想创建一个枚举类,你应该创建一个类的定义,因为你扩展Enum

public enum SeatType { 
    // your enum code 
} 
1

你的类是错误的。

您不能从Enum延伸。声明一个类Enum这样的:

public enum MyEnum { 
    AISLE, 
    WINDOW, 
    MIDDLE; 
} 

这将创建Enum。实际使用情况如下所示:

MyEnum.valueOf("AISLE"); 
MyEnum.AISLE; 
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; 
    } 
} 
1

Java编译器不允许你extendENUM类。看看this answer.

另外,请阅读this了解如何使用enum

在这种情况下,你可以创建一个enum一样,

public enum SeatType 
{ 
    WINDOW, AISLE, MIDDLE 
} 
3

在Java中,它不会让你明确地扩展枚举。

您可以创建一个枚举象下面这样:

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

根据Java语言规范,每个枚举是隐式最后,是枚举的子类。因此,枚举已经从另一个类继承,使得它成为另一个类的子类将会破坏Java的单一继承范例。然而,枚举可以实现一个接口