當我有這樣一個Java泛型函數:如何讓Java編譯器告訴我它推斷出哪種類型?
<T> T choose(T a, T b) { }
,我把它從什麼地方,我怎麼能找到推斷什麼類型對於T?
編輯:類型推斷髮生在編譯時。所以我問的是,如何讓編譯器告訴我它在編譯期間有一些信息(推斷的類型),但是它不會將它放到.class文件中?
有一件事我可以做的就是儘量結果分配給不同類型的變量,例如:
// Compiles, so inferred type is at least Throwable.
Throwable foo = choose(new EOFException(), new FileNotFoundException());
// If this compiles, T must be Map or something that implements Map.
Map foo = choose(new HashMap(), new TreeMap());
但是,這是相當間接的。我希望編譯器告訴我它爲T所推斷的類型,而不是我必須播放20個問題。
如果你downvoting,您可以指定你不同意什麼,好嗎? – 2009-12-05 13:07:59