如何在Eclipse中使用“推断通用类型参数…”

每当eclipse中的源代码遗漏了generics时,它就会建议我“推断通用类型参数……”

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

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

有几种情况可以“推断”某些东西 – 日食仍然空白。

来自Eclipse帮助 :

在识别出可以进行此替换的所有位置之后,通过参数化类型替换generics类型的原始类型。
可用:项目,包和类型
选项:’假设clone()返回接收器类型的实例’。 表现良好的类通常遵循此规则,但如果您知道您的代码违反了该规则,请取消选中该框。

保留无约束类型参数raw(而不是推断)。 如果对ArrayList a的元素没有约束,则取消选中此框将导致Eclipse仍然提供通配符参数,将该引用替换为ArrayList。

您可以在页面末尾找到一个示例 。

HTH

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

首先声明一个generics类

//GenericFoo.java public class GenericFoo { 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(); foo1.setFoo(new Boolean(true)); Boolean b = (Boolean)foo1.getFoo(); } } 

应用“推断通用类型参数”后,代码将重构为:

 // GenericFooUsage.java after refactoring public class GenericFooUsage { public GenericFooUsage() { GenericFoo foo1 = new GenericFoo(); foo1.setFoo(new Boolean(true)); Boolean b = foo1.getFoo(); } } 

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

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

使用“推断通用类型参数”时看到的内容