java无法识别泛型t,关于java:什么是泛型方法,在这种情况下如何绑定< T >?

本问题已经有最佳答案,请猛点这里访问。

前言:我理解泛型以及它们是如何在类级别声明的(例如class MyClass< T >)但我从未在静态方法的级别上声明它,并且没有任何显式绑定(例如class MySubclassextends 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;

}

样品用法:

String s1 = getItemExtra(someIntent,"some_string_extra");

Uri u1 = getItemExtra(someIntent,"some_uri_extra");

JVM如何知道< T >使用什么类型? (是的,此方法编译并成功执行)。

不是远程问题的另一个问题。

@Nilish我问的是泛型方法,而不是泛型类。 我已经更新了问题以反

你可能感兴趣的:(java无法识别泛型t)