当前位置: 首页 > 面试题库 >

获取器和设置器执行附加逻辑

贾成天
2023-03-14
问题内容

我有一个Java类,它表示两个元素(典型的POJO)之间的相关性:

public class Correlation {

    private final String a;
    private final String b;

    private double correlation;

    html" target="_blank">public Correlation(String a, String b) {
        this.a = a;
        this.b = b;
    }

    public double getCorrelation() {
        return correlation;
    }

    public void setCorrelation(double correlation) {
        this.correlation = correlation;
    }

}

要遵循正确的相关逻辑(如果a等于b),则相关值应始终为1。我可以添加更改getter方法的逻辑(忽略a可能为空值的事实):

public double getCorrelation() {
    if (a.equals(b)) {
        return 1D;
    } else {
        return correlation;
    }
}

令我烦恼的是将此逻辑添加到getter方法中,我应该更改方法名称还是对其进行记录应被认为足够?


问题答案:

早在Java的早期,getter / setter对就用于精确标识 bean的 属性 ,目的是使可以定义通过计算而不是普通成员变量实现的概念属性。
__

不幸的是,随着时间的流逝,程序员越来越依赖于getter / setter只是基础属性的访问者/变量,这种趋势随着引入 POJO
来识别仅具有getter的对象而成为正式的趋势。方法的二传手。

另一方面,将执行计算的对象与仅携带数据的对象区分开是一件好事。我猜您应该确定要实现的类类型。在您的位置,我可能会将关联作为附加的构造函数参数,并在此处检查其有效性,而不是在getter中。您Correlation不能成为计算对象,因为它没有足够的信息来执行任何计算。



 类似资料:
  • 问题内容: 我将如何使用Java的ArrayList的getter和setter方法?这就是我所拥有的。我认为我正确地使用了吸气剂,但是我不知道如何为ArrayList使用setter。 问题答案: 要设置值,您可以将pass作为参数,只需将设置为参数即可。 另外,请注意使用而不是问题中所显示的。通常,setter方法不返回任何内容。

  • 问题内容: 我想创建一个遵循Scala setters / getters约定的Java类。 我尝试了以下简单的课程,但它不起作用: 但是,当我尝试从scala访问它时: 并且我收到“向val重新分配”的错误消息。我试图寻找这个问题,但是所有问题都从scala到Java出现了。 正确的做法是什么? 谢谢! 问题答案: 您只能这样做,而且您可能不想这样做已经足够困难。 您 不能 做的是编写一个裸露的

  • 问题内容: 我需要知道如何让NetBeans使用快捷方式生成getter和setter。 问题答案: 将光标放在班级内部,然后按+ 并从上下文菜单中选择。

  • 如何在TypeORM中使用getter和setter。 我在这里和这里都看到了问题,但没有找到答案 例如,离开我的用户实体 我使用的是类型ORM版本 0.2.7

  • 我有一个Apache Spark应用程序在集群模式下在YARN集群上运行(Spark在此集群上有3个节点)。 当应用程序运行时,Spark UI显示2个执行器(每个执行器在不同的节点上运行)和驱动程序在第三个节点上运行。我希望应用程序使用更多的执行器,所以我尝试添加参数--num executors to Spark submit并将其设置为6。

  • 我已经将spark.executor.memory设置为2048M,在UI“环境”页面中,我可以看到这个值已经设置正确。但是在“executors”页面中,我看到只有一个executor,它的内存是265.4MB。非常奇怪的价值。为什么不是256MB,或者就像我设定的那样?