我遇到了一个涉及静态泛型方法的奇怪情况。这是代码:
class Foo<E>
{
public static <E> Foo<E> createFoo()
{
// ...
}
}
class Bar<E>
{
private Foo<E> member;
public Bar()
{
member = Foo.createFoo();
}
}
我为什么不必在表达式中指定任何类型参数Foo.createFoo()
?这是某种类型推断吗?如果要对此明确,如何指定类型参数?
7
我建议您更改createFoo方法的类型参数E。因为,类Foo的类型参数E与方法createFoo()的类型参数E不同。
—
Gursel Koca
@GurselKoca他可以明确地执行member = Foo。<E> createFoo();。要求它们与编译时间相同。
—
乔治Xavier