本文正在参加「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…