我是编程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)未定义 -
非常感谢任何帮助:)
答案 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 {
...
}
您无需使用values
和valueOf
方法。它们继承自Enum
。
从它的外观来看,你的枚举似乎有2个字段 - i
和s
。您应该将它们声明为字段:
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;
}
}