Java Concurrency - Immutable Object

> Procedural Languages > Java > Java - Concurrency (Parallel Work)

1 - About

Immutable object in Java Concurrency.

3 - Rules

  • Don't provide "setter" methods — methods that modify fields or objects referred to by fields.
  • Make all fields final and private.
  • Don't allow subclasses to override methods. The simplest way to do this is to declare the class as final. A more sophisticated approach is to make the constructor private and construct instances in factory methods.
  • If the instance fields include references to mutable objects, don't allow those objects to be changed:
    • Don't provide methods that modify the mutable objects.
    • Don't share references to the mutable objects. Never store references to external, mutable objects passed to the constructor; if necessary, create copies, and store references to the copies. Similarly, create copies of your internal mutable objects when necessary to avoid returning the originals in your methods.
Advertising

4 - Library

  • com.google.common.collect (Guava)
List<Table> allTables = ImmutableList.copyOf(Table.values());
final String value1;
final Boolean blue;
 
private Session(String value1, boolean isBlue)
{
   this.value1 = value1;
   this.isBlue = isBlue;
}
 
public Session withBlue(boolean isBlue)
{
  return new Session(
          this.value1,
          this.isBlue
  );
}

4.1 - Collections

since Java10, Create new collection instances from existing instances

  • List.copyOf,
  • Set.copyOf,
  • and Map.copyOf .

4.2 - Stream

Java - Stream Processing New methods toUnmodifiableList, toUnmodifiableSet, and toUnmodifiableMap have been added to the Collectors class in the Stream package.

5 - Documentation / Reference

Advertising