将对象引用本身传递给自己的方法显式

时间:2014-10-02 23:28:02

标签: java parameter-passing

好奇心问题。

你能找到任何理由将对象作为自己方法的参数显式传递吗? e.g。

someObject.someMethod(someObject);

提前致谢。

3 个答案:

答案 0 :(得分:3)

嗯,当然。只考虑一个矩阵类(比如固定大小 - 3x3左右),我们称之为SquareMatrix3。这可能有一个执行矩阵乘法的方法multiply。将3x3矩阵与3x3矩阵相乘得到3x3矩阵。因此,签名看起来像

public class SquareMatrix3 {
  // returns the result of multiplying this with other, as a new matrix
  public SquareMatrix3 multiply(SquareMatrix3 other) { ... }
}

如果你想计算某些SquareMatrix3 mat的平方,你可以调用SquareMatrix3 matSquared = mat.multiply(mat);

这当然只是一个例子,肯定还有很多其他例子。

答案 1 :(得分:2)

是。考虑一种方法来“添加”或将某些对象连接到您的对象。在这种情况下,它返回结果。

public Foo add(Foo other);

您可能想要自己添加或连接自己,在那里打电话

Foo result = this.add(this)

答案 2 :(得分:1)

当然有理由这样做。被调用的方法可能适用于该类的任何实例,无论是this还是其他实例。例如,编写一个Set类的方法是一种很好的方法,可以测试该集合是否是其自身的成员。

public class <T> FunkySet implements Set<T> {
    public boolean isMemberOfSelf() {
        return contains(this);
    }
    . . .
}