java - 如何将未定义数量的方法作为参数传递给另一个方法

标签 java methods

好吧,我受困于我正在创建的程序,问题是我需要(?)一种能够应用某些车辆设置的方法,这些设置只能通过已在 API 中定义的方法应用。这是我的代码,可以更清楚地显示问题:

applySettings(new Vehicle(), setColor(0, 0), setNumberPlate("EA3"));//An undefined number of parameters, the new Vehicle is only for this example, I will use this method in several parts of my code
public void applySettings(Vehicle vehicleId, Vehicle settings/*?*/){

    }

(Vehicle 是一个接口(interface),有很多方法,其中一些不是用于设置的,我试过用匿名类和一个叫做 lambda 的东西或类似的东西来做,但我无法让它工作) 如您所见,我需要传递未定义数量的方法(已在 API 中定义)来应用车辆设置。我可以很容易地做到这一点:

vehicleCreated.applySettings();
public void applySettings(){
    vehicleId.setNumerPlate("SOME");
    vehicleId.setColor(0, 0);
}

但我认为这是错误的(我将不得不为不同的设置集制作几种方法)因为 java 是一个 OOPL,我应该使事情变得非常灵活。还是我错了?

最佳答案

你可以像这样创建一个功能接口(interface):

interface VehicleModifier {
     void apply( Vehicle vehicle );
}

并使用辅助方法实现一些经典修饰符:

static VehicleModifier withColor(int colorX, int colorY) {
    return vehicle -> vehicle.setColor(colorX, colorY);  
}

static VehicleModifier withNumberPlate(String tag) {
    return vehicle -> vehicle.setNumberPlate(tag);  
}

然后像这样改变你的方法:

public void applySettings(Vehicle vehicleId, VehicleModifier... modifiers){
    Stream.of( modifiers ).forEach( modifier -> modifier.apply(vehicleId) );
}

您现在可以调用:

applySettings(new Vehicle(), withColor(0, 0), withNumberPlate("EA3"));

关于java - 如何将未定义数量的方法作为参数传递给另一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34771996/

相关文章:

java - getGraphics() 上的空指针异常

java - 附件名称编码失败

Java缺少返回语句

java - 通过 Java 的远程 Powershell 脚本

c# - 这个静态方法是线程安全的吗?

python - 为什么方法没有引用相等性?

python - 在 Python 中计算斜率的方法

ios - shouldChangeCharactersInRange 调用两次

mongodb - Meteor:如何检索方法中插入的_id?

java - 使用java发送邮件时出现异常