gpt4 book ai didi

java - Java-14 之后的 getter/setter 命名约定

转载 作者:行者123 更新时间:2023-12-01 21:32:50 24 4
gpt4 key购买 nike

Java 14 推出 records特征。 Record 创建与字段同名的 getter,因此可以编写 print(person.name()) 例如。但旧的 Java bean 约定规定应将此方法命名为 getName()

在同一个代码库中使用两种样式看起来不太好。将所有内容迁移到记录是不可能的,因为它们太有限,无法替换所有用例。

是否有任何官方或半官方指南如何在新代码中的 Java 14 之后命名 getter 和 setter?

最佳答案

引自JEP 359 :

It is not a goal to declare "war on boilerplate"; in particular, it is not a goal to address the problems of mutable classes using the JavaBean naming conventions.

根据同一份文档,我的理解是,记录浅层不可变数据的透明持有者

话虽这么说:

  1. 记录不是寻找 getter/setter 语法糖的地方,因为它们并不是要取代 JavaBean。
  2. 我非常同意你的观点,JavaBeans 太冗长了。 也许可以实现一个附加功能(称为bean,而不是记录) - 与记录功能非常相似的行为但这将允许可变性。在这种情况下,记录bean不会相互排斥。
  3. 正如前面提到的,记录处于预览模式。让我们看看社区的反馈是什么。

总而言之,恕我直言,他们向前迈出了一步......我写了 this example设置您可以看到代码从标准 JavaBean 减少到约 15% LOC。

另外,请注意,记录的行为类似于普通类:它们可以声明为顶级或嵌套,它们可以是通用的,它们可以实现接口(interface)(来自同一文档)。实际上,您可以通过提取包含 getters 的接口(interface)来部分模拟 JavaBeans(不过,只有 getters 才有意义)——但这将是大量工作,而且不是一个真正干净的解决方案...

因此,根据上述逻辑,为了解决您的问题, - 我没有看到任何有关 getter 和 setter 的(半)官方指南,而且我认为没有现在的动机是因为记录并不能替代 JavaBeans...

关于java - Java-14 之后的 getter/setter 命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59981081/

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