Java 调用方法参数时可以指定方法参数的名称吗?
在python中,如果我有一个方法Java 调用方法参数时可以指定方法参数的名称吗?,java,Java,在python中,如果我有一个方法 def hello(a, b): print a print b 我可以用任何一个打电话 hello('one', 'two) 或 我可以用java做类似的事情吗 我问这个问题的原因是,对于单元测试,我正在创建一个 MyObj obj = new MyObj("one", "two", 33, "xxxxxx", 44, 55, "derpity do"); 如果我能看到每个参数与什么相关,那么阅读我的代码就会容易得多 我可以用java
def hello(a, b):
print a
print b
我可以用任何一个打电话
hello('one', 'two)
或
我可以用java做类似的事情吗
我问这个问题的原因是,对于单元测试,我正在创建一个
MyObj obj = new MyObj("one", "two", 33, "xxxxxx", 44, 55, "derpity do");
如果我能看到每个参数与什么相关,那么阅读我的代码就会容易得多
我可以用java做类似的事情吗
不,你不能。但是,您可以使用。不幸的是,在Java中无法做到这一点。但是,您可以使方法具有与类本身相同的返回类型,并使用
返回该类设置每个字段后的代码>。使用返回这个代码>使方法调用与其他方法调用可链接,然后可以将方法名称用作参数的“标签”。这对于最小化代码中的冗余非常有用,Java中最流行的变体是Builder模式,它使用一个额外的Builder类作为补充来创建易于自定义的类实例。您也可以在其他语言中看到这种类型的东西,但大多数情况下都是为了其他目的,而不是花哨的构造函数(例如,像JQuery这样的级联Javascript库)
例如:
class Car {
private int year;
private String make;
private String model;
private int mileage;
public Car year(int year) {
this.year = year;
return this;
}
public Car make(String make) {
this.make = make;
return this;
}
public Car model(String model) {
this.model = model;
return this;
}
public Car mileage(int mileage) {
this.mileage = mileage;
return this;
}
public void drive(int miles) {
this.mileage += miles;
}
}
public class DriveNewCar {
public static void main(String args[]) {
Car myDreamCar = new Car()
.year(2015)
.make("Tesla")
.model("Model S")
.mileage(0);
myDreamCar.drive(55);
}
}
注意,这不是构建器模式,它只是使用返回这个代码>和简短的方法名称,使API客户端的内容更加清晰,因此它基本上只是花哨的setter
与Python不同,Java通常喜欢冗长,即使是最简单的事情。这就是为什么我强烈建议使用合适的IDE,如IntelliJ、Eclipse或Netbeans,以使您的生活更轻松。不,您只能查看感谢!我想我也可以添加注释,说明每个论点是什么。不,这是我对Java最大的抱怨。
class Car {
private int year;
private String make;
private String model;
private int mileage;
public Car year(int year) {
this.year = year;
return this;
}
public Car make(String make) {
this.make = make;
return this;
}
public Car model(String model) {
this.model = model;
return this;
}
public Car mileage(int mileage) {
this.mileage = mileage;
return this;
}
public void drive(int miles) {
this.mileage += miles;
}
}
public class DriveNewCar {
public static void main(String args[]) {
Car myDreamCar = new Car()
.year(2015)
.make("Tesla")
.model("Model S")
.mileage(0);
myDreamCar.drive(55);
}
}