练习在Java中返回自身而不是void
我的队友们向我介绍了一种新的练习写作方法,这种方法不会再次失效练习在Java中返回自身而不是void,java,coding-style,Java,Coding Style,我的队友们向我介绍了一种新的练习写作方法,这种方法不会再次失效 public class Test { public Test doCalculations() { //code return this; } public Test appendTitle(String test) { //code return this; } } 他们建议返回对象本身,而不是返回void。他们说,这种方法的一个优点是,可以链接方法 而不
public class Test {
public Test doCalculations() {
//code
return this;
}
public Test appendTitle(String test) {
//code
return this;
}
}
他们建议返回对象本身,而不是返回void。他们说,这种方法的一个优点是,可以链接方法
而不是写:
while(1) {
test.appendTitle("aaa");
test.doCalculations();
map.add(test);
}
您可以编写更优雅的代码:
while(1) {
map.add(test.appendTitle("aaa").doCalculations());
}
这种方法的缺点是什么?你建议把它包括在日常使用中吗?我认为这不是一个好的做法。通过查看返回对象的方法签名,我如何知道返回的是全新实例还是现有实例
类的实例。我建议您研究一下decorator设计模式。当然,您应该考虑何时应用它。称为fluent接口(但不是唯一的)。我建议在每次
之前先换行。在我的辩护中,我没有发现这个问题:“好处…”,而且这个问题问得很神秘,我想很多人都不会明白到底发生了什么。如果这个类被称为生成器
或类似的东西,这在我看来是相当清楚的。没错,但这个问题似乎比这更一般。这不是一个坏的做法,事实上,它用于许多配置对象、构建器对象,而且,该死的,应该用在任何可以调用setter 1-2次以上的地方。很明显,它会返回自身,而不是一个新实例,否则,javadoc应该清楚地说明这一点。使用该模式的示例:Hibernate标准、Astyanax、Cloudera的hadoop配置等等。当然,他们的开发人员对开发API知道一两件事,所以在我看来,公认的答案是完全错误的。