[英]In Java, how to get all possible return types?
在Java中,方法可以定義如下:
Object m(boolean b) {
if (b) {
return "123";
} else {
return new Integer(123);
}
}
在這種情況下,m的返回值在運行時可以是String或Integer。 那么,有什么方法可以在靜態時間內獲取方法的所有可能的運行時返回類型?
對於此特定方法,是的。 只需使用true
和false
調用它,然后使用getClass()
檢查返回值。 對於一般情況,不會。
通常,您也不需要。 得益於Java強大的類型和泛型,返回值的類型永遠不會讓人感到意外。
應該避免返回示例中所示的多種不同類型,並且在有用/必要的情況下(例如工廠模式),它應與調用者無關。
如果您知道該方法的實現,則可以。 您知道它可能返回的所有類型,因為您可以閱讀代碼並告訴自己它們是什么。
但是,以編程方式? 對於任何方法,通常? 不,您不能這樣做,而不是在運行時。 這就是為什么編寫具有有意義的返回類型的良好的,敏感的方法簽名非常重要的原因。 返回Object
很少是最好的主意。 當您說您的方法返回Object
,該方法的約定是字面上允許出現的任何內容。 沒什么錯,但是如果您只知道方法的簽名,那么這就是您可以說的關於方法的最具體的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.