兩種方法具有相同的簽名,如果它們具有相同的名稱和 參數類型。判別不同返回類型的函數[Java],有沒有什麼技巧可以解決這個問題?
由於Java規範我知道,我們不能有兩種方法具有相同的名稱,具有相同的參數類型,但不同的返回類型。換句話說,用不同的返回類型重載函數是不可能的。
讓我們考慮我有兩種方法:
方法一:get(String s) return ObjectA;
方法2:get(String s) return ObjectB;
錯誤將occure由於複製的方法。我試着使用泛型來解決它:
T get(String s) return (T) Object;
現在我可以調用,使用例如: ObjectA = (ObjectA) get("FooBar");
和它的作品。
但問題是,我想返回特定的對象,而在「主」,所以鑄造它
ObjectA = get("FooBar");
,而不是
ObjectA = (ObjectA) get("FooBar");
有沒有什麼絕招,通過返回類型區分函數?也許添加另一個參數?使用界面?我根本不知道如何在Java中解決這個問題。
我在C++中發現了一個'技巧',所以可以用其他語言編寫。 Function overloading by return type?
爲什麼不給他們不同的名字? –
您正確地說,您試圖做的事情在Java中是不允許的,所以我建議您重新編寫代碼以避免這種情況。在您的情況下,編譯器或開發人員無法知道在任何給定的調用中哪個方法將甚至應該被調用。不要尋找解決方法,只是不要這樣做。 –