初始化两种类型的参数
我写了一个方法,该参数的类型为Taxi
或Shuttle
。这是它的主要想法:初始化两种类型的参数
public boolean requestPickup(Passenger passenger, Class<?> vehicleClass){
Taxi taxi = scheduleTaxi();
if(taxi != null) {
taxi.setPickupLocation(passenger.getPickupLocation());
return true;
}
else {
return false;
}
}
有人可以请向我解释两种类型的参数如何初始化?
谢谢
您可以使用像这样的反射。
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
}
}
但.forName()仅适用于String类型? – jiji
请找到更新 –
使用的界面,车辆与延伸出两个类从它命名的出租车和班车服务。现在在你的Signature pass接口中作为参数。那将会做的是你可以传递所有扩展了这个接口的对象。
public interface Vehicle {
}
public class Taxi implements Vehicle {
}
public class Shuttle implements Vehicle {
}
现在通过车辆接口参数
public void requestPickup(Passenger passenger, Class<? extends Vehicle > Vehicle ) {
Vehiclec taxi = new Taxi();
Vehiclec shuttle = new Shuttle();
.....
}
我不能更改方法的签名,它在规格 – jiji
使用类别 >车辆作为参数,但它限制了范围。 – Cyclotron3x3
Java有没有属性的概念。你的意思是说吗? –
对不起,目前还不清楚你想完成什么。请详细解释。 – yole
'Taxi'和'Shuttle'和任何超类型之间的关系是什么? – ChiefTwoPencils