我想知道何时使用静态方法?假设我有一个包含几个 getter 和 setter 的类,一两个方法,并且我希望这些方法只能在该类的实例对象上调用。这是否意味着我应该使用静态方法?
例:
Obj x = new Obj();
x.someMethod();
…艺术
Obj.someMethod(); // Is this the static way?
我比较困惑!
网友回答:
仅在以下方案中定义静态方法:
网友回答:
一个经验法则:问问自己“即使还没有构造对象,调用此方法是否有意义?如果是这样,它绝对应该是静态的。
因此,在类中,您可能有一个方法:Car
double convertMpgToKpl(double mpg)
…这将是静态的,因为人们可能想知道 35mpg 转换为什么,即使没有人曾经构建过.但是这种方法(它设置了一个特定的效率):Car
Car
void setMileage(double mpg)
…不能是静态的,因为在构造任何方法之前调用该方法是不可想象的。Car
(顺便说一下,反之亦然:有时你可能有一个涉及两个对象的方法,但仍然希望它是静态的。 例如:Car
Car theMoreEfficientOf(Car c1, Car c2)
虽然这可以转换为非静态版本,但有些人会争辩说,由于没有一个“特权”选择哪个更重要,你不应该强迫调用者选择一个作为你将调用该方法的对象。但是,这种情况在所有静态方法中只占相当小的一部分。Car
Car
网友回答:
使用静态方法有一些正当的理由:
new Util().method(arg)
Util.method(arg)
method(arg)
removeSpecialChars()
removeSpecialChars(s)
s.removeSpecialChars()
如果要创建单例,还必须创建一个静态方法,但是…不要。我的意思是,三思而后行。
现在,更重要的是,为什么你不想创建一个静态方法?基本上,多态性消失了。您将无法覆盖该方法,也无法在接口中声明它(Java 8 之前)。它需要您的设计具有很大的灵活性。此外,如果你需要状态,如果你不小心,你最终会遇到很多并发错误和/或瓶颈。
模板简介:该模板名称为【在java中,何时使用静态方法?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Java】栏目查找您需要的精美模板。