为什么使用静态方法并将引用作为参数传递给对象而不是在对象上调用该方法会有好处?
为了阐明我的意思,请考虑以下课程:
public class SomeClass {
private double someValue;
public SomeClass() {
// Some constructor in which someValue is set
}
public void incrementValue() {
someValue++;
}
}
与使用静态方法的此替代实现相比:
public class SomeClass {
private double someValue;
public SomeClass() {
// Some constructor in which someValue is set
}
public static void incrementValue(SomeClass obj) {
obj.someValue++;
}
}
我的问题不仅限于此类。我感兴趣的是在什么地方传递对象而不是在方法上调用它。这是否有优势?如果是这样,为什么?
1
感觉像是代码气味,用两种方法做完全相同的事情。如果将静态方法简单地委派给另一种方法,则它会觉得无用,但不一定是“坏的”
—
Nathan Merrill
@Mego不仅示例中给出的方法;我问是否有任何时候使用静态方法和传递对象比在对象上调用方法更好?
—
Addison Crump
想必您是专门要求Java吗?
—
enderland
我认为这个问题是默认的,即面向对象的代码是最佳的。更具程序性或功能性的方法自然会导致使用静态方法。...但是,在静态方法和实例方法之间复制功能非常愚蠢。我希望这只是一个例子,您所讨论的实际代码只有静态的。
—
jpmc26,2013年