本文正在参加「Java主题月 – Java Debug笔记活动」,详情查看 活动链接
问题:什么时候使用静态方法
I am wondering when to use static methods? Say if I have a class with a few getters and setters, a method or two, and I want those methods only to be invokable on an instance object of the class. Does this mean I should use a static method?
我想知道什么时候使用静态方法?就是说我有一个 带有一些getter和setter方法的类,我想这些只在一个类的实例对象中使用。那是不是意味着我应该用一个静态方法
例如:
Obj x = new Obj();
x.someMethod();
...or:
Obj.someMethod(); // Is this the static way?
复制代码
我现在非常疑惑
回答一
一条经验法则,问你自己“调用这个方法是否有意义的,即使还没有对象被构造出来” 如果是的话,他应该被定义为静态的。
就像在你一个汽车类里面,可能有一个方法
double convertMpgToKpl(double mpg)
复制代码
…which would be static, because one might want to know what 35mpg converts to, even if nobody has ever built a Car. But this method (which sets the efficiency of one particular Car):
这个方法可以是静态的,因为即使没有建造过一辆汽车,我们也想知道35mpg 可以转换成多少。
但是下面这个方法(用来设置一辆特定汽车的功率)
void setMileage(double mpg)
复制代码
这个就不能成为静态的了,因为在车辆没有被构造之前,不可能调用这个方法,
顺便说一下,这个转换不一定是对的,你有时可能有一个方法去调用两台汽车对象,这时候就还是静态的了,例如:
Car theMoreEfficientOf(Car c1, Car c2)
复制代码
虽然它可以被转换成非静态的版本,一些人可能就会争论因为不存在一个特权选择哪台车比较重要,你不能强制选择一台车去调用这个方法。但是这种情况只是占所有静态方法中一个很小的部分
文章翻译自Stack Overflow:stackoverflow.com/questions/2…