2011-10-25 60 views
2

我正在尋找一種方法來確保CollectList)中包含的所有對象都從謂詞返回指定的值。Google Guava:謂詞assertTrue

僞代碼:

Collections.assertTrue(List<Ballons>, isBluePredicate) 

我不認爲這是可能與目前的API(也許我在正確的位置不是找)

如果這樣做會在函數退出時存在首先遇到錯誤的值?

回答

2

番石榴本身不具有任何斷言。如果我沒有理解這個問題的權利,你應該能夠使用Iterables.all

assert Iterables.all(balloonsList, isBlue) : "some aren't blue"; 

文檔不明確斷言是否爲元素的其餘部分,如果評估結果一個假,但我懷疑他們不會。你可以平凡地檢查來源。

如果你確實需要它來爲所有元素進行評估,那麼你應該使用filter和檢查結果的大小。

+0

這是真的。 'Iterables.all'委託給'Iterators.all',其具有短路邏輯在所述第一故障返回false。 – Ray