【发布时间】:2021-07-20 20:15:41
【问题描述】:
我有这样的问题(当然这只是一个例子)。我有处理器,我必须修理汽车。我有一个字符串作为汽车对象的 json。我不知道 ServiceStation 的实现,我只有汽车实现类。我必须将 json 解析为汽车对象并将其提供给服务站。有没有合适的解决方案来实现这一点?
public interface Car {}
public class BMW implements Car {}
public interface ServiceStation<T extends Car> {
public void repair(T car)
}
public class BMWServiceStation<BMW> {
public void repair(BMW car) { ... }
}
public class ServiceStationProcessor {
public void process(String carJson, Settings settings) {
Class<? extends Car> carClass = settings.getCarClass();
ServiceStation serviceStation = settings.getServiceStation();
JavaType javaType = objectMapper.getTypeFactory().constructType(carClass);
Object<? extends Car> obj = objectMapper.readValue(carJson, javaType); <-- ?? something like this?
serviceStation.repair(obj)
}
}
【问题讨论】:
-
如果你问我认为你在问什么,答案是“不”。 Java 泛型是不可引用的。这意味着代码无法区分维修宝马和维修丰田。您应该研究实现此目标的不同方法。例如,来自 Joshua Bloch 的 Effective Java 一书中的"Type Safe Heterogeneous Container",。
-
@markspace 谢谢你的建议。我会看看这个;)
标签: java json generics objectmapper