【发布时间】:2022-01-09 04:54:49
【问题描述】:
我有 3 个不同的枚举,其中包含定义一种元素类型的值,然后我有一个枚举,其中包含指定这 3 个枚举中的任何一个的值
类似这样的东西(这是一个例子):
public enum Vehicles {
CAR("This is a car"),
BIKE("This is a bike"),
TRUCK("This is a truck");
private String description;
private Vehicles(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
其他 3 个枚举是这样的:
public enum CAR_ENUM {
COUPE("This car is a coupe"),
SEDAN("This car is a sedan");
private String description;
private CAR_ENUM(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
public enum BIKE_ENUM {
CHOPPER("This bike is a chopper"),
SPORTS("This bike is a sports one");
private String description;
private BIKE_ENUM(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
public enum TRUCK_ENUM {
SMALLTRUCK("This is a small truck"),
BIGTRUCK("This is a big truck");
private String description;
private TRUCK_ENUM(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
现在,有一个类(我们称之为 CarDealer),我需要在其中声明属性。 首先,我需要声明一个 Vehicles 项目,然后是另一个属性,它只读取 Vehicles 枚举并根据该枚举创建一个属性...
所以,在实践中,它应该是这样的:
public class CarDealer {
private Vehicles vehicle;
private (enum that fits whatever value the Vehicles enum has);
}
另外,我无法更改这 3 个枚举(因为它们在应用程序的其他地方使用)
我认为也许我可以使用接口或其他东西,但我没有那么实验,我完全可以使用一些想法......
希望你能给我一些帮助, 提前致谢
【问题讨论】:
-
我很困惑,你能提供一个更真实的代码库,以便我们了解你真正想要实现的目标吗?谢谢!
-
@JoãoDias 我修改了它以给出一个适合我的情况的例子,希望它足够了
-
如果类是
CarDealer,你不能简单地使用private CAR_ENUM carType;吗?你想用这些枚举做什么,如果你能准确地解释你试图解决的用例,也许有更好的方法。 -
@JoãoDias CarDealer 是一个数据传输对象,每当我们给车辆属性一个值时,想法就是有一个属性接受该枚举的值(例如,假设车辆返回CAR_ENUM,但它也可以返回 BIKE_ENUM 或 TRUCK_ENUM,因此该属性必须准备好检索它的任何值并根据情况使其成为不同的枚举...我认为可能有一种通用的方式来声明枚举,但我有点迷路)。我只需要将数据库信息检索到这些字段中。
-
那么我会说你需要不同的类:
Car、Bike和Truck,而不是具有所有三种可能性的枚举。但要确定我们需要更多关于您的用例的上下文,因为我认为我们在这里处理的是XY problem。
标签: java enums interface attributes assign