【问题标题】:Getters/setters when first word has second letter capitalized第一个单词的第二个字母大写时的获取器/设置器
【发布时间】:2014-10-06 21:11:08
【问题描述】:

我们应该从以下名称中得到什么? :mGage Program

如果我使用 camelCase 这将是 mGageProgram,如果我生成(在 Eclipse 中)getter 和 setter,我将得到以下信息:

public String getmGageProgram() {
    return mGageProgram;
}

public void setmGageProgram(String mGageProgram) {
    this.mGageProgram = mGageProgram;
}

这对我来说似乎不正确,因为我期待 getMGageProgram()setMGageProgram(value)

这些 getter/setter 名称好吗?

【问题讨论】:

    标签: java naming-conventions getter-setter camelcasing


    【解决方案1】:

    根据 8.8: Capitalization of inferred names of the JavaBeans API specification 从 IDE 生成的名称正确

    【讨论】:

      【解决方案2】:

      它们是 100% 正确的 :) 但程序员之间的约定不同,对我来说,它的方法名称是驼峰式的,而不是变量。至于语法它是正确的:)

      【讨论】:

      • 谢谢。我更关心序列化/反序列化对象映射器,而不仅仅是一个简单的约定。不过,它似乎适用于 Jackson 和 SpringMVC。
      【解决方案3】:

      我想更深入地介绍一下规范的内容。它指定我们如何从 getter 和/或 setter 的名称获取属性名称。在这种情况下有趣的引述是:

      ...为了支持偶尔使用所有大写名称,我们检查是否 名称的前两个字符都是大写的,如果是这样 别管它。

      来自 8.8 节:推断名称的大写。

      给出的一个例子是URL(如getURLsetURL)变为(或保持)URL(不是uRL)。

      因此,您和我所期望的方法名称 getMGageProgramsetMGageProgram 将隐含一个名为 MGageProgram 的属性,其中包含大写的 M。由于我们想要mGageProgram,我们需要在getter 和setter 的名称中使用小写的m

      因此,我阅读的规则确实允许您在 any getter 或 setter 名称中的 getset 之后使用小写字母。这对我来说是一个特别的惊喜。当然,我们不想在不必要的情况下利用它。

      链接: JavaBeans Spec download page

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-06
        • 2014-04-11
        • 2011-07-29
        相关资源
        最近更新 更多