以下代码无法编译,因为Java无法推断getSomething的类型参数:
class Example {
static void callIt() {
takeString(getSomething());
}
static void takeString(String s) {
}
static <T> T getSomething() {
return null;
}
}
有没有办法指定类型参数,如<String>getSomething()
,但没有指定它被调用的类的名称?即不是Example.<String>getSomething()
。
有没有办法指定类型参数,如
<String>getSomething()
,但没有指定它被调用的类的名称?即不是Example.<String>getSomething()
不,那里没有。 That is the syntax for explicitly providing a type argument to a generic method.
您的代码应该在Java 8上进行编译,具有改进的和有针对性的类型推断。
你为什么不这样做:
static Object getSomething() {return null;}
然后将其转换为字符串:
takeString((String)getSomething());
从你的简短例子可以看出为什么你需要泛型