簡體   English   中英

Java Queue評估順序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM