java - 调用静态泛型方法

标签 java generics static type-inference

我遇到了一个涉及静态泛型方法的奇怪情况。这是代码:

class Foo<E>
{
    public static <E> Foo<E> createFoo()
    {
        // ...
    }
}

class Bar<E>
{
    private Foo<E> member;

    public Bar()
    {
        member = Foo.createFoo();
    }
}

为什么我不必在表达式 Foo.createFoo() 中指定任何类型参数?这是某种类型推断吗?如果我想明确一点,如何指定类型参数?

最佳答案

是的,这是基于分配目标的类型推断,根据 JLS section 15.12.2.8 .明确地说,你可以这样称呼:

Foo.<String>createFoo();

关于java - 调用静态泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5297978/

相关文章:

java - 如何停止覆盖数组列表?

c# - 使用具有属性的静态方法

java - Java枚举可以迭代吗?

java - JAXB 编码动态地为根元素提供 namespace

java - 在 addItem 的使用中如何利用泛型并检查我的参数?

arrays - 从数组中删除数组项

java - 创建简单类文件时方法签名的常量池索引非法

java - 关于分段代码缓存的小问题 (http ://openjdk. java.net/jeps/197)

c# - 使用列表和未定义类型作为参数和返回类型

c++ - 为什么报错LINK2005 : object already defined error disappears when I declare the object as static