java - 如何在Eclipse中使用 "Infer Generic Type Arguments..."

标签 java eclipse generics

每当 eclipse 中的源代码中缺少泛型时,它都会提示我“推断泛型类型参数...”

问题是我认为“推断通用类型参数...”实际上并没有推断出任何东西。它通常不会提出任何建议。

适用于哪些场景?它是如何工作的?

在一些情况下可以“推断”出某些东西 - eclipse 仍然是空白。

最佳答案

这是一个示例,展示了如何在 eclipse 中使用“推断通用类型参数”:

首先声明一个泛型类

// GenericFoo.java

public class GenericFoo<T> {
    private T foo;

    public void setFoo(T foo) {
        this.foo = foo;
    }

    public T getFoo() {
       return foo;
    }
}

然后在不指定类型的情况下实例化它,并进行不必要的类型转换。

// GenericFooUsage.java before refactoring

public class GenericFooUsage {

    public GenericFooUsage() {
        GenericFoo foo1 = new GenericFoo<Boolean>();

        foo1.setFoo(new Boolean(true));
        Boolean b = (Boolean)foo1.getFoo();
    }
}

应用“Infer Generic Type Arguments”后,代码重构为:

// GenericFooUsage.java after refactoring

public class GenericFooUsage {

    public GenericFooUsage() {
        GenericFoo<Boolean> foo1 = new GenericFoo<Boolean>();

        foo1.setFoo(new Boolean(true));
        Boolean b = foo1.getFoo();

       }
}

那么“推断通用类型参数”的作用是:

  1. 自动推断通用参数的类型。
  2. 删除不必要的类型转换。

What you see when using "Infer Generic Type Arguments"

关于java - 如何在Eclipse中使用 "Infer Generic Type Arguments...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13641725/

相关文章:

java - 确保同一个对象不会从 Java 中的 XML API 加载两次

java - Eclipse更新后找不到编译器

Eclipse 水平滚动键盘快捷键

swift - swift 中 any 类型和泛型类型的区别

java - Valhalla 的值对象可以保存泛型类型并在它们是原始类型时将其扁平化吗?

java - 替代通用 Java 方法的非法下界?

java - Java 中导致编译错误的上限通配符

java - 为什么我的 RxJava observable 没有触发订阅者?

Java 或 Groovy 相当于 python for loop + izip

eclipse - 让 Eclipse 更 slim