gpt4 book ai didi

java - 为什么 PrintStream::printf 返回 PrintStream?

转载 作者:行者123 更新时间:2023-12-02 10:51:15 24 4
gpt4 key购买 nike

PrintStream的printf方法的返回类型是PrintStream,每次调用它都会返回这个对象(其他打印方法都是void)。那么为什么要这样设计呢?就此而言,如果您有一个任何类型的对象,并且该对象具有返回该对象本身的方法,那么还有什么意义呢?您已经拥有该对象(特别是该对象)。那么为什么要返回这个对象呢?

最佳答案

它被称为 fluent interface 。它的设计使您可以将调用链接在一起,如下所示:

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
}
//...
}

至于在这种情况下这是否是一个好的设计模式,我想说不是特别好。这也不算太糟糕。

关于java - 为什么 PrintStream::printf 返回 PrintStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50991714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com