唔太明白咩叫同一個 Object, 指的係同一個 reference, 定入面的 state 一樣? ...
snoopy11hk 發表於 2016-3-20 14:31 
佢想講既係- final ArrayList<Integer> list = new ArrayList<>(...);
- doSomething(list);
- doAnother(list); // 有bug,因為list既內容比doSomething改左,而你冇注意到
複製代碼 Immutable既話就會係:- final ImmutableList<Integer> list = new ImmutableList<>(...);
- doSomething(list);
- doAnother(list); // 保證list內容冇變到
- // 如果要改要咁樣:
- final ImmutableList<Integer> modifiedList = doSomething(list);
複製代碼 但我覺得呢個只係style問題,同OOP無關
呢個唔係language既問題,而係library既問題,上面既code已經顯示Java有能力做immutable data structures
Java亦肯定有人寫immutable list
(已經有人將Scala / Clojure既Collections port返去Java)
而話說回來,Scala亦支援mutable variables / objects,因為係某D情況下會快好多
所以你只可以話「Scala偏向immutable,Java偏向mutable」 |