前言:我明白仿製藥以及它們如何在類級別(例如class MyClass<T>
)宣佈,但我從來沒有見過它的靜態方法的級別上聲明,並沒有任何明確的綁定(例如class MySubclass<String> extends MyClass
)。什麼是通用方法,在這種情況下<T>是如何綁定的?
我發現這個代碼片段在我正在工作的應用程序(我沒有寫這部分)。我從來沒有見過用這種方式聲明的方法。 <T>
是而不是定義在班級的其他地方。 Intent.getExtras().get()
返回Object
,其實際上可能是String
,Boolean
等。
private static <T> T getItemExtra(final Intent intent, final String extraName) {
T item = null;
if(intent != null && intent.getExtras() != null) {
item = (T) intent.getExtras().get(extraName);
}
return item;
}
使用範例:
String s1 = getItemExtra(someIntent, "some_string_extra");
Uri u1 = getItemExtra(someIntent, "some_uri_extra");
如何在JVM知道使用什麼類型<T>
? (是的這種方法編譯和執行成功)。
不能遠程重複其他問題。 –
@Nilish我在問泛型方法,而不是泛型類。我已經更新了這個問題來反映這一點。 –
@OliverGondža是的,我得承認這是重複的。 –