【问题标题】:In Java, do accessor methods always need to return a value?在Java中,访问器方法总是需要返回一个值吗?
【发布时间】:2015-07-16 21:34:13
【问题描述】:

我想知道 Java 中的访问器方法是否总是需要返回一个值。因为你可以“访问”一种方法来打印等。

例如,下面的方法可以被认为是类中的访问器方法吗?

public static void getCapacity(){
    System.out.print("Capacity is 0"); 
}

【问题讨论】:

  • 如果你使用访问器,你就没有访问方法;你正在使用它。使用访问器通常访问目标对象/类的某些状态。方法几乎可以用给定的名称做任何事情,所以不要依赖它来决定方法的作用。
  • 我不会认为这是一种访问器方法。如果我在我正在处理的代码中遇到它,我会在心跳中重命名该方法。 getFoo() 按照惯例返回“foo”的值,做任何其他事情都会使任何试图阅读/使用代码的人感到困惑。
  • 我同意@azurefrog。这种方法更像是showCapacity 方法。
  • 当然也同意@azurefrog - 我会将此方法称为printCapacity()

标签: java accessor


【解决方案1】:

不严格,但这确实违反了惯例。从技术上讲,您不是在访问数据,而只是显示它。

【讨论】:

    【解决方案2】:

    需要访问方法来获取值。我们调用该方法来获取值,并继续与他合作(或者,例如,与某物进行比较)。

    OOP 原则之一是封装原则 - 使用访问方法获取类的封闭字段的值。

    这里我们希望看到信息丰富的消息

    public void printCapacity(){
        System.out.print("Capacity is 0"); 
    } 
    

    在这种方法中,我们期望获得价值

    public int getCapacity(){
        return this.capacity;
    }
    

    【讨论】:

      【解决方案3】:

      你可以做你想做的事。但是在 Java 中,许多类在标准 Java Beans specification 上设置了默认行为。

      此行为的一部分描述了类成员的访问器。如果您使用规范中描述的 bean getter 的命名约定(即 get/is + 成员名称)但没有相关行为,您将混淆您的代码的许多读者。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-20
        • 2019-01-19
        • 1970-01-01
        • 1970-01-01
        • 2015-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多