课堂上“with”方法的目的

时间:2017-03-30 15:01:21

标签: java

我正在查看名为Product的课程,其中包括以下内容:

@JsonProperty("name")
public void setName(String name) {
    this.name = name;
}

public Product withName(String name) {
    this.name = name;
    return this;
}

withName方法的目的是什么以及它是如何使用的?为什么不这样做:

Product p = new Product();
p.setName("foo");

3 个答案:

答案 0 :(得分:5)

主要区别在于with方法返回调用对象的实例。

这允许像

这样的“流畅”调用
 someProductBuilder.withName("bla").withPrice(100)...

从这个意义上说:通过返回受影响的对象来区分普通的setter与允许流畅使用的setter的非正式约定。

答案 1 :(得分:1)

你可以做任何一种方式,但第一种方法是尝试提供一个"fluent" api,这样你就可以把一些电话连在一起......就像这样:

Product p = new Product().withName("blah").price(1234).quantityOnHand(35);

它类似于一个构建器,你可能有另一个呈现api的对象,然后通过“build()”调用结束链,该调用产生你正在构建的类的实例:

Product p = ProductBuilder.newBuilder().withName("blah").price(1234).quantityOnHand(35).build();

答案 2 :(得分:1)

它用于通过名称获取对象的引用,以便方法调用可以与同一对象上的其他调用链接。

示例:withName(String name)