2015-12-22 50 views
1

我没有发现任何特定于此问题的东西。我刚开始使用NetBeans工作,它thew有关手册集合的“警告”添加循环:最佳实践 - Collection.add()和处理布尔返回值

for(String str : strings){ list.add(str) } 

净豆真的要我来处理从集合除布尔返回值:

for(String str : strings){ boolean add = list.add(str) } 

我从来没有真正考虑过是否存储/处理collection.add()方法返回的错误或疏忽。我经常看到它只是忽略了返回值,因为它可能没有价值。这是不正确的?什么是不处理返回布尔值的分支?或者这只是一个IDE的东西?

谢谢大家。

+0

嘛,要么你配置你的IDE要提醒你的是,或者是默认设置。无论哪种方式,如果你不需要返回的值,那么忽略它。而'List#add'就据我所知(以我的经验)很少使用(但是'Set#add'相当多)。 – Tom

+1

@Tom那么如果人们不使用'add',人们如何将它们放在列表中? – wvdz

+0

@wvdz我的意思是返回值:D。当我写下最后一句时,看起来我有一个脑袋。 – Tom

回答

3

该警告不是关于忽略Collection.add的返回值,而是关于手动循环数组并添加到集合。 NetBeans真的不喜欢手动阵列副本,并且喜欢使用API​​方法来进行复制。

在你的情况下,这将是list.addAll(Arrays.asList(strings))

+0

我不得不怀疑......是否真的更可取?鉴于Arrays.asList将创建一个“新的ArrayList”,并且“addAll”只会遍历该arrayList。所以它看起来更简洁,大致相同,表现更差。 – Mshnik

+0

@Mshnik您必须将NetBean的维护人员告诉他们为什么选择这是警告。在NetBeans上,复制集合或数组的首选方法是使用API​​提供的方法。这就是为什么OP会收到他所询问的警告。 –

+0

这很有道理。我想我能更好地掌握C++和使用指针(我知道这里不是同样的东西),但看到这样的警告只是让我进入“你的管理内存分配不正确”的空间...... – CaptnJunks

0

这是IDE警告告诉你,没有使用返回值。您可以在设置中关闭此警告。

注:如果你需要测试的项目在某些特殊情况下加入或没有,那么你可以使用这个返回boolean值,否则你可以忽略它。

0

放@SuppressWarnings({ “未登记”, “空”, “未使用”})这是funtion 如:

@SuppressWarnings({"unchecked", "null", "unused"}) 
private void myfuntion() { 
    ... 
    for(String str : strings){ list.add(str); } 

}