初始化两种类型的参数

时间:2016-09-22 06:54:46

标签: java arguments parameter-passing

我编写了一个采用Taxi类型或Shuttle类型参数的方法。这是主要的想法:

public boolean requestPickup(Passenger passenger, Class<?> vehicleClass){
        Taxi taxi = scheduleTaxi();
        if(taxi != null) {
            taxi.setPickupLocation(passenger.getPickupLocation());
            return true;
        }
        else {
            return false;
        }
}

有人可以向我解释一下如何初始化两种类型的论点?

由于

2 个答案:

答案 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 ();
       .....

}