私はオブジェクトが実装する親インターフェイスと子インターフェイスを持っています。特定のVehicleEntityオブジェクトをTruck
というようにして、自分自身をHashMapに追加するために、子インターフェイスを作成しました。Car
です。 Truck
はVehicleManagerのaddToCar()
メソッドを呼び出して、TruckオブジェクトをCarのhashMapに追加します。私が持っている問題はCarEntity ce = ve;
です。 NetBeansはCarEntityにve
をキャストするよう指示していますが、私はしたくありません。コードの行は有効ではないはずです(forループが見ているオブジェクトがCarオブジェクトであると仮定します)。これをどうすれば解決できますか?子オブジェクトに親オブジェクトを割り当てるJavaでキャストしないで
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'メソッドはどのクラスに属していますか? –
class VehicleManager – Dan
ここにはさらに問題があります。 'addToCar'では、HashMapで' add'を呼び出します。そのような方法はありません。 'put(String c、Something s)'を使う必要があります。それは何ですか? –