![](/img/trans.png)
[英]Is there a reason why one can't have a static and a non-static method with identical signature?
[英]Why can't you have a static and non-static method with the same method signature in Java?
对我来说似乎没有意义。 也许有人可以帮助我理解。 我必须切换参数的顺序以获得此功能似乎有点愚蠢。
因为Java允许以非静态方式调用static
方法,即在类的对象上调用static
方法。 因此,如果一个类具有static
和non-static
方法 - 相同签名的method()
,则调用如下: obj.method()
将是不明确的。
因为:
class Example {
void method () { }
static void method () { }
void example () {
method(); // <- ambiguous
}
}
因此,您要么引入一个约束来区分该上下文中的静态和非静态调用,例如需要Example.
在静态调用之前,或者您不允许相同的签名。 后者被选中。
请注意,在大多数情况下,如果您发现自己想要具有相同签名的静态和非静态方法,这可能是可能的设计问题的红旗,或者至少建议可以选择更好的方法名称。
如果您正在考虑“切换参数的顺序”作为kludge, 肯定会重新考虑。 如果你在那种情况下,肯定有改善的空间。 如果我看过这样的代码,我会引起一些严肃的关注。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.