【发布时间】:2015-04-05 03:39:48
【问题描述】:
对我来说似乎没有任何意义。也许有人可以帮助我理解。我必须切换参数的顺序才能拥有此功能,这似乎有点愚蠢。
【问题讨论】:
标签: java
对我来说似乎没有任何意义。也许有人可以帮助我理解。我必须切换参数的顺序才能拥有此功能,这似乎有点愚蠢。
【问题讨论】:
标签: java
因为 Java 允许以非静态方式调用 static 方法,即在类的对象上。因此,如果一个类具有 static 和 non-static 方法 - method() 具有相同的签名,则像这样的调用:obj.method() 将是模棱两可的。
【讨论】:
因为:
class Example {
void method () { }
static void method () { }
void example () {
method(); // <- ambiguous
}
}
因此,您要么引入一个在该上下文中区分静态和非静态调用的约束,例如在静态调用之前需要Example.,否则您不允许相同的签名。选择了后者。
请注意,在大多数情况下,如果您发现自己需要具有相同签名的静态和非静态方法,这可能是可能存在设计问题的危险信号,或者至少建议可以为您的方法选择更好的名称.
如果您正在考虑“切换参数的顺序”作为杂项,肯定重新考虑。如果您处于这种情况,肯定有总体改进的空间。如果我看到这样的代码,我会引起一些严肃的注意。
【讨论】: