2015-12-22 53 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); } 

}