我在理解此类通用方法调用时遇到问题:
object = ObjectGenerator.<T> getObject(objectName);
这是上述情况的上下文:
class GenClass<T> {
private T object;
// ... some code
public void initObject(String objectName) {
object = ObjectGenerator.<T> getObject(objectName);
}
}
class ObjectGenerator {
public static <T extends Object> T getObject(String name) {
// some code
return someObject;
}
}
问题是在调用
<T>
之前,扮演getObject(objectName)
的角色是什么? 最佳答案
注意:在您给出的特定示例中,ObjectGenerator.getObject(objectName);
应该可以正常编译。
在某些情况下,类型推断机制无法解决以下事实:
T object;
object = ObjectGenerator.getObject(objectName);
返回的类型应该是
T
。在这种情况下,您需要通过明确指示您期望的返回类型来为编译器提供一些帮助。这是一个人为的示例,您需要在其中明确指定泛型类型:
class Example {
public static <T> List<T> m1() {
return m2(Arrays.<T> asList()); //Arrays.asList() would not compile
}
public static <T> List<T> m2(List<T> l) {
return l;
}
}