[英]Java Queue evaluation order
我有以下代碼
myQueue.offer(new myObj(
fcnA,
Collections2.transform(...),
Collections2.transform(...)
))
我的問題是什么時候對Collections2.transform(...)
進行評估?
我的猜測是,直到從隊列中調用myObj的創建之后,這種情況才會發生。 這個對嗎?
簡而言之,是的,將在調用構造函數時對其進行評估。
參見Java語言規范(JLS), 15.12.4.2。 評估參數 ,尤其是最后兩段和示例15.12.4.1-2。 方法調用中的評估順序 。
Collections2
看起來像一個番石榴類。 如果是這樣,則transform()
返回一個懶惰的集合,即到源集合的實時視圖。 當您通過Collection
接口實際訪問Collection
的元素時(可能是當您遍歷集合時),將評估所有操作。
如果需要轉換后的集合副本,則需要自己制作副本(例如new ArrayList(Collections2.transform(...))
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.