【发布时间】:2011-12-16 01:58:41
【问题描述】:
我有一个父接口和一个对象将实现的子接口。我创建了一个子接口,因为我想要一个特定的 VehicleEntity 对象说Truck 将自己添加到Car 中的HashMap。 Truck 将调用 VehicleManager 的 addToCar() 方法,将 Truck 对象添加到 Car 的 hashMap 中。我遇到的问题是CarEntity ce = ve;。 Netbeans 告诉我将 ve 投射到 CarEntity 但我不想。代码行不应该是有效的(假设 for 循环正在查看的对象是 Car 对象)?我该如何解决这个问题?
public interface VehicleEntity {
getId();
getSpeed();
move();
}
public interface CarEntity extends VehicleEntity{
addToCar(String c);
}
public class Car implements CarEntity{
HashMap<String, VehicleEntity> cars = new HashMap<String, VehicleEntity>();
public void addToCar(String c) {
cars.add(c);
}
}
public class VehicleManager {
HashMap<String, VehicleEntity> vehicles = new HashMap<String, VehicleEntity>();
public void reportToCar(String id) {
for (VehicleEntity ve : ve.values()) {
if (ve.getId().equals(id)) {
CarEntity ce = ve; // Issue here
}
}
}
【问题讨论】:
-
那个
reportToCar方法属于哪个类? -
这里还有更多问题...在
addToCar中,您在HashMap 上调用add。没有这样的方法。您需要使用put(String c, Something s)。那是什么东西? -
是的,一开始我有ArrayList,忘记改了
标签: java inheritance casting