Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Builders will make your code too verbose to be usable. In practice, almost all immutable data structures I've seen pass in state through the constructor. For what its worth, here are a nice series of posts describing immutable data structures in C# (which should convert readily into Java):</p> <ul> <li><a href="http://blogs.msdn.com/ericlippert/archive/2007/11/13/immutability-in-c-part-one-kinds-of-immutability.aspx" rel="noreferrer">Part 1: Kinds of Immutability</a></li> <li><a href="http://blogs.msdn.com/ericlippert/archive/2007/12/04/immutability-in-c-part-two-a-simple-immutable-stack.aspx" rel="noreferrer">Part 2: Simple Immutable Stack</a></li> <li><a href="http://blogs.msdn.com/ericlippert/archive/2007/12/06/immutability-in-c-part-three-a-covariant-immutable-stack.aspx" rel="noreferrer">Part 3: Covariant Immutable Stack</a></li> <li><a href="http://blogs.msdn.com/ericlippert/archive/2007/12/10/immutability-in-c-part-four-an-immutable-queue.aspx" rel="noreferrer">Part 4: Immutable Queue</a></li> <li><a href="http://blogs.msdn.com/ericlippert/archive/2007/12/13/immutability-in-c-part-five-lolz.aspx" rel="noreferrer">Part 5: Lolz!</a> (included for completeness)</li> <li><a href="http://blogs.msdn.com/ericlippert/archive/2007/12/18/immutability-in-c-part-six-a-simple-binary-tree.aspx" rel="noreferrer">Part 6: Simple Binary Tree</a></li> <li><a href="http://blogs.msdn.com/ericlippert/archive/2007/12/19/immutability-in-c-part-seven-more-on-binary-trees.aspx" rel="noreferrer">Part 7: More on Binary Trees</a></li> <li><a href="http://blogs.msdn.com/ericlippert/archive/2008/01/18/immutability-in-c-part-eight-even-more-on-binary-trees.aspx" rel="noreferrer">Part 8: Even More on Binary Trees</a></li> <li><a href="http://blogs.msdn.com/ericlippert/archive/2008/01/21/immutability-in-c-part-nine-academic-plus-my-avl-tree-implementation.aspx" rel="noreferrer">Part 9: AVL Tree Implementation</a></li> <li><a href="http://blogs.msdn.com/ericlippert/archive/2008/01/22/immutability-in-c-part-10-a-double-ended-queue.aspx" rel="noreferrer">Part 10: Double-ended Queue</a></li> <li><a href="http://blogs.msdn.com/ericlippert/archive/2008/02/12/immutability-in-c-part-eleven-a-working-double-ended-queue.aspx" rel="noreferrer">Part 11: Working Double-ended Queue Implementation</a></li> </ul> <p>C# and Java are extremely verbose, so the code in these articles is quite scary. I recommend learning OCaml, F#, or Scala and familiarizing yourself with immutability with those languages. Once you master the technique, you'll be able to apply the same coding style to Java much more easily.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload