Java 为什么';t eclipse在方法参数中使用菱形运算符
我有一门课是这样的:Java 为什么';t eclipse在方法参数中使用菱形运算符,java,eclipse,diamond-operator,Java,Eclipse,Diamond Operator,我有一门课是这样的: public class TestObject { List<String> data; public List<String> getData() { return data; } public void setData(List<String> inputData) { data = inputData; } } 公共类TestObject { 列出数据; 公共列表
public class TestObject
{
List<String> data;
public List<String> getData()
{
return data;
}
public void setData(List<String> inputData)
{
data = inputData;
}
}
公共类TestObject
{
列出数据;
公共列表getData()
{
返回数据;
}
公共无效设置数据(列表输入数据)
{
数据=输入数据;
}
}
我在“首选项->Java->编辑器->保存操作->配置->不必要的代码->删除冗余类型参数”(1.7或更高版本)中选中了该选项
现在我创建一个主类:
public class Main
{
public static void main(String[] args)
{
TestObject o = new TestObject();
o.setData(new ArrayList<String>());
}
}
公共类主
{
公共静态void main(字符串[]args)
{
TestObject o=新的TestObject();
o、 setData(新的ArrayList());
}
}
现在我保存文件
我本来希望eclipse在保存文件时删除setter中的“String”类型参数,但它仍然保留在那里
你知道为什么会这样吗(是有原因吗,还是我错过了必须启用的设置?)
谷歌它只删除以下代码:
List<String> yourList = new ArrayList<String>()
to
List<String> yourList = new ArrayList<>()
List yourList=new ArrayList()
到
List yourList=new ArrayList()
如果这是像您的代码一样传入的方法,eclipse将不会删除它
不完全确定,但从下面的错误看来,只有当类型参数是多余的时才会删除它
将类型参数减少为菱形(1.7或更高)o仅当冗余时才禁止o
看听起来像一个bug,尽管它没有多大区别。你知道为什么会这样吗?因为如果我删除setter调用中的type参数,它就是编译的有效代码。@programmingFox在这种情况下,
new ArrayList()
和new ArrayList()
是相同的,只要setData(List inputData)
没有更改(例如改为setData(List inputData)
)。在这里,隐藏类型参数会降低代码的可读性。