什么时候使用静态方法 | Java Debug 笔记

612 阅读1分钟

本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看 活动链接

问题:什么时候使用静态方法

我想知道什么时候使用静态方法?就是说我有一个 带有一些getter和setter方法的类,我想这些只在一个类的实例对象中使用。那是不是意味着我应该用一个静态方法

例如:

Obj x = new Obj();
x.someMethod();
...or:

Obj.someMethod(); // Is this the static way?

我现在非常疑惑

回答一

一条经验法则,问你自己“调用这个方法是否有意义的,即使还没有对象被构造出来” 如果是的话,他应该被定义为静态的。

就像在你一个汽车类里面,可能有一个方法

double convertMpgToKpl(double mpg)

这个方法可以是静态的,因为即使没有建造过一辆汽车,我们也想知道35mpg 可以转换成多少。

但是下面这个方法(用来设置一辆特定汽车的功率)

void setMileage(double mpg)

这个就不能成为静态的了,因为在车辆没有被构造之前,不可能调用这个方法,

顺便说一下,这个转换不一定是对的,你有时可能有一个方法去调用两台汽车对象,这时候就还是静态的了,例如:

Car theMoreEfficientOf(Car c1, Car c2)

虽然它可以被转换成非静态的版本,一些人可能就会争论因为不存在一个特权选择哪台车比较重要,你不能强制选择一台车去调用这个方法。但是这种情况只是占所有静态方法中一个很小的部分

文章翻译自Stack Overflow:stackoverflow.com/questions/2…