前言: 我理解泛型以及它们是如何在类级别声明的(例如class MyClass<T>),但我从未在静态方法的层次上声明它,并且没有任何明确的绑定(例如class MySubclass<String> extends MyClass).
我在我正在处理的应用程序中找到了这段代码片段(我没有写这部分).我从未见过以这种方式声明的方法.<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;
}
Run Code Online (Sandbox Code Playgroud)
样品用法:
String s1 = getItemExtra(someIntent, "some_string_extra");
Uri u1 = getItemExtra(someIntent, "some_uri_extra");
Run Code Online (Sandbox Code Playgroud)
JVM如何知道要使用的类型<T>?(是的,此方法编译并成功执行).