我编写了一个采用Taxi
类型或Shuttle
类型参数的方法。这是主要的想法:
public boolean requestPickup(Passenger passenger, Class<?> vehicleClass){
Taxi taxi = scheduleTaxi();
if(taxi != null) {
taxi.setPickupLocation(passenger.getPickupLocation());
return true;
}
else {
return false;
}
}
有人可以向我解释一下如何初始化两种类型的论点?
由于
答案 0 :(得分:0)
你可以使用这样的反射。
public boolean requestPickup(Passenger passenger, Class<?> vehicleClass){
Object obj=Class.forName(vehicleClass.getName()).newInstance();
if(obj instanceof Taxi){
//do taxi login
}else if(obj instanceof Shuttle ){
//do shuttle logic
}
}
答案 1 :(得分:0)
使用界面Vehicle并从其中扩展名为Taxi和shuttle的两个类。现在在您的Signature传递接口中作为参数。这样做可以传递扩展该接口的所有对象。
public interface Vehicle {
}
public class Taxi implements Vehicle {
}
public class Shuttle implements Vehicle {
}
现在将Vehicle接口作为参数
传递public void requestPickup( Passenger passenger, Class<? extends Vehicle > Vehicle ) {
Vehiclec taxi = new Taxi();
Vehiclec shuttle = new Shuttle ();
.....
}