[英]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.