3 回答
TA贡献1807条经验 获得超9个赞
这被称为流利的界面。它的设计使您可以将调用链接在一起,如下所示:
stream.printf("aaaa")
.printf("bbbb")
.printf("cccc");
而不是:
stream.printf("aaaa");
stream.printf("bbbb");
stream.printf("cccc");
通过this在方法末尾返回来实现:
class PrintStream extends FilterOutputStream implements Appendable, Closeable {
//...
public PrintStream printf(String var1, Object... var2) {
return this.format(var1, var2);
}
public PrintStream format(String var1, Object... var2) {
//...
return this; // <-- here
}
//...
}
至于在这种情况下这是否是一种好的设计模式,我不会特别指出。进攻方面也不错。
TA贡献1820条经验 获得超10个赞
该print()
方法,返回void
在的首次发行版本中定义的传统/原始方法PrintStream
。
虽然PrintStream printf(String format, Object ... args)
和PrintStream printf(Locale l, String format, Object ... args)
后来在中介绍了(在Java 5中更具体)PrintStream
。
开发人员可能决定引入流利的方法来简化其使用,例如:
ps.print("Hello %s", oneString) .print("Hello %s", otherString);
由于开发人员不会通过重构现有方法(用void
流利的方法代替)来破坏类的API,因此现在我们将它们混合在一起。
这些新方法很好,但是不幸的是,结果导致API不一致:大多数打印方法都返回,void
并且只有两种(很可能是较不常用的一部分)是流利的。
添加回答
举报