Java 调用方法参数时可以指定方法参数的名称吗?

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

在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做类似的事情吗


不,你不能。但是,您可以使用。

不幸的是,在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);
    }
}