gpt4 book ai didi

java - 更新对象的方法的返回类型分析

转载 作者:行者123 更新时间:2023-12-02 03:50:59 25 4
gpt4 key购买 nike

以下两种为更新对象的方法定义返回类型的方法有什么区别? (void 与 Foo)

第一个:

void updateSomeFields(final Foo foo){
foo.setBar(fancyProcessing(foo.getBar())); // and more
}

第二个:

Foo updateSomeFields(final Foo foo){
foo.setBar(fancyProcessing(foo.getBar())); // and more
return foo;
}

这些方法都没有在 Foo 内部定义。

<小时/>
  • 差异之一是否与过程式与 OOP 风格有关(1 与 2)?
  • Java 允许在方法中更改对象字段的值(即允许 1. 工作)。但在这种情况下应该改变它们吗?
  • 在方法 2 中定义本地 Foo 是否有意义?
<小时/>

更新

基于 Andy Turner 在 fluent interfaces 上的线索(面向对象的API,旨在提供更具可读性的代码)它已经回答:

在方法 2 中定义本地 Foo 是否有意义?
局部变量声明是语法糖,因为人类在深度嵌套的方法调用方面存在困难。

对于方法级联(具体来说是方法链接)来说,中继后续调用的指令上下文很有用,但是在这个问题的范围内,如果方法在 Foo 本身之外,返回类型可能既不是 Foo 也不是 void,而是包含辅助类。

最佳答案

你的方法二可以更轻松地在单个语句中设置多个属性如 Bar.setFoo(foo).setFoo1(foo1)

我更喜欢方法2,因为它提供了额外的灵 active

更新:此原则违反了 Java Bean 规范,因此 JSP 和其他 Spring 内容可能会破坏

另请参阅Fluent Interface

A fluent interface is normally implemented by using method cascading (concretely method chaining) to relay the instruction context of a subsequent call

关于java - 更新对象的方法的返回类型分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35873880/

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