【问题标题】:Java getter with Parameter?带参数的Java getter?
【发布时间】:2020-02-03 19:07:15
【问题描述】:

我是 Java 新手。我了解一些 Java 的核心基础知识,例如 setter 和 getter,最近遇到了一个带参数的 getter(不确定它是否是正确的调用方式):

public double getDistance(Point p)
{
   // what is inside here? Usually without the "Point p" I simply put "return distance;"
}

此方法属于一个名为 Point 的类,它旨在从同一类中的私有方法获取距离计算。

如果有人能就getter“参数”以及如何在此方法中应用返回值,我将不胜感激。

谢谢。

编辑:添加私有计算方法

// Compute distance
private double distance(Point p)
{   
    double xx;
    double yy;
    double r;

    xx = this.x - p.x;
    yy = this.y - p.y;

    r = Math.sqrt(nx * nx + ny * ny);

    return r;
}

【问题讨论】:

  • 嗯,你正在返回距离。但距离什么?我假设您正在返回与p 的距离
  • 很抱歉,如果最初不清楚。我正在从私有计算方法“私有双距离(点 p)”返回距离。
  • 不管怎样,尽管有get,但这不是一个“getter”,它特别不带参数。
  • 只是因为方法名以get开头,没什么特别的,你可以像distance那样做。或者只是返回调用distance返回的值
  • 这个方法可能应该被称为distanceTo(Point p),而不是以get...开头的东西。

标签: java oop


【解决方案1】:

我认为一个简单的参数重命名会让事情变得清晰,你想计算两点之间的距离。具体来说,this 点和that 点。假设您在每个 Point 中都有 double xy 坐标,可能看起来像,

public double getDistance(Point that) {
    double tmpX = that.x - this.x;
    double tmpY = that.y - this.y;
    return Math.sqrt((tmpX * tmpX) + (tmpY * tmpY));
}

【讨论】:

  • 嗨艾略特!谢谢回答。我有一种方法可以在 getter 之前进行计算。我已经用这种方法修改了我上面的问题。我不明白如何在getter中插入正确的语法或语句,因为参数()中有一个(Point p)。
  • return distance(p);
【解决方案2】:

为什么不使用Point2D?它具有用于计算从提供的点到您已有的某个点的距离的内置方法。

      Point2D pt = new Point2D.Double(10,20);
      double distance = pt.distance(new Point2D.Double(20,30));
      System.out.println(distance);

查看java.awt.geom.Point2D

【讨论】:

    猜你喜欢
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 2021-11-05
    • 2017-11-18
    • 2020-02-03
    相关资源
    最近更新 更多