Tibor17 commented on pull request #703: URL: https://github.com/apache/maven/pull/703#issuecomment-1085568686
If we want to use immutable objects, we should use Java Records. We still do not have Valhalla ready. The developers often do not understand Java Memory Model and there is no guarantee that they would not make a mistake when they update any immutable object. The developers usually would not understand why ConcurrentLinkedQueue is preferable over ArrayList and `List.copyOf()` is ideal https://docs.oracle.com/javase/10/docs/api/java/util/List.html#copyOf(java.util.Collection), and so we should use `List.copyOf()` which means that we would switch the project to Java 10 - bad luck! Nobody would accept Java 10, I guess. The immutable object should be fetched with data in constructor via a builder. `MavenProject and MavenProjectBuilder composition` ``` record MavenProject(MavenProjectBuilder builder) { public MavenProject { dependencies = List.copyOf(builder.getDependencies()); ... ... ... } } ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@maven.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org