gpt4 book ai didi

java - Java中的方法链

转载 作者:IT老高 更新时间:2023-10-28 20:46:40 26 4
gpt4 key购买 nike

之前在这里回答了几个问题以及最近我一直在做的一些工作时,我一直想知道为什么 Java 不支持其内置类上的方法链接。

例如,如果我要创建一个 Car 类,我可以通过重新输入 this 而不是 void 来使其 chainable,如下所示:

public class Car {
private String make;

public Car setMake(String make) {
this.make = make;
return this;
}
}

内置库不倾向于以这种方式做事有什么特别的原因吗?方法链有缺点吗?

我可能忽略了一些可以解释缺少方法链接的东西,但是任何默认返回 void 的 setter 方法都应该返回对 this 的引用(至少在我看来应该如此)。这将使以下情况更加清晰。

container.add((new JLabel("label text")).setMaximumSize(new Dimension(100,200)));

而不是冗长的:注意:如果你愿意,它不会阻止你以这种方式编码。

JLabel label = new JLabel("label text");
label.setMaximumSize(new Dimension(100,200));
container.add(label);

我很想听听这个决定背后的原因,如果我不得不猜测它会产生与此相关的开销,因此应该只在需要时使用。

最佳答案

嗯。有两个方向的可读性论点 - 有这样的事情试图把太多的东西放在一行中。

但老实说,我怀疑这是出于历史原因:普遍的“链式”行为并没有真正流行或广为人知。 Swing 正在开发中。您可能会争辩说它应该在以后添加,但这样的事情往往会造成二进制不兼容以及 Sun/Oracle 历来非常谨慎的其他问题。

更多最新的 JDK 库——参见例如ByteBuffer对于一个主要的、众所周知的例子——已经在有意义的地方提供了链接行为等。

关于java - Java中的方法链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11561817/

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