gpt4 book ai didi

java - 我可以扩展一个类并覆盖封闭的枚举类型吗?

转载 作者:太空狗 更新时间:2023-10-29 22:49:54 27 4
gpt4 key购买 nike

如果我有一个包含 enum 类型的类,我可以扩展这个类并覆盖枚举类型或向这个枚举添加更多常量吗?目的是用户将能够调用 getColor() 方法而不知道动态对象是来自基类还是派生类。例如:

public class Car {

private String name;

private CarColors color;

public enum CarColors {
BLUE,
GREEN
}

public Car(CarColors c) {
color=c;
}

public CarColors getColor() {
return color;
}
}

public class RacingCar extends Car {

private CarColors color;

public RacingCar(CarColors c) {
color=c;
}

public enum CarColors {
BLUE,
GREEN,
RED
}

@Override //?????
public CarColors getColor() {
return color;
}
}

主要是:

Car racingCar = new RacingCar();
CarColors color = racingCar.getColor();

最佳答案

您不能扩展enum。枚举本质上是一个 final 类。但是,枚举可以实现,因此结合泛型,您可以获得:

interface Color{

}
enum CarColor implements Color{
BLUE,
GREEN;
}
enum RacingCarColor implements Color{
BLUE,
GREEN,
YELLOW;
}
class Vehicle<T extends Color> {
protected T color;
protected Vehicle(T color){
this.color = color;
}
public T getColor(){
return color;
}
}

class Car extends Vehicle<CarColor>{
public Car(CarColor color){
super(color);
}
}

class RacingCar extends Vehicle<RacingCarColor>{
public RacingCar(RacingCarColor color){
super(color);
}
}

瞧!


如果你想要求类型是一个Color 并且是一个枚举,使用这个绑定(bind):

class Vehicle<T extends Enum<T> & Color> { ...

或者一个奇怪的等价物:

class Vehicle<T extends Enum<? extends Color>> { ...

关于java - 我可以扩展一个类并覆盖封闭的枚举类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6282175/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com