Re:Better Java – Resources for Writing Modern Java
by mdasen on Saturday September 19, 2015 @11:07PM
(#10246442)
Immutables (http://immutables.org/) is another option which creates nice, immutable value classes. It's a bit more succinct than AutoValue, but it does still require annotation processing in your IDE.
Re:Better Java – Resources for Writing Modern Java
by CHY872 on Sunday September 20, 2015 @09:07AM
(#10247364)
Lombok's a bit sketchy as parts of it rely on some undocumented, non-standard parts of the Sun Java compiler - you have to be really into code generation to want to use it.
Other libraries like Immutables are safer for this purpose.
Re:Better Java – Resources for Writing Modern Java
by adpreese on Saturday September 19, 2015 @08:07PM
(#10246025)
He mentions Lombok in the tools section.
And Guava's collection creation methods are part of an intense desire to not use the new key word anywhere in application code.
Re:Better Java – Resources for Writing Modern Java
by kilink on Saturday September 19, 2015 @08:33PM
(#10246090)
Also, if you look at the Javadocs for some of the creation methods, they explicitly state that they are for Java 6 and earlier, and that modern code should just use the constructor with the diamond syntax.
http://docs.guava-libraries.googlecode.com/git/javadoc/com/g...
Re:Better Java – Resources for Writing Modern Java
by Pyxl101 on Saturday September 19, 2015 @10:54PM
(#10246412)
The other replies kind of hit on this, but I'll expand on it by saying:
The collection creation methods existed because Java could perform type inference on methods but could not on constructors:
// Java 1.5
Map<String,Integer> map = new HashMap<String,Integer>();
// Guava
Map<String,Integer> map = Maps.newHashMap();
// Java 1.8 diamond notation
Map<String,Integer> map = new HashMap<>();
Re:Better Java – Resources for Writing Modern Java
by kilink on Saturday September 19, 2015 @08:28PM
(#10246073)
I realize he mentions Lombok, but he specifically bemoans the extra boilerplate with writing builders and data classes, but does not mention the @Data or @Builder annotations...
Re:Better Java – Resources for Writing Modern Java
by jonalmeida on Tuesday September 22, 2015 @03:02PM
(#10260830)
Wouldn't the best way to create an empty map be to use `Collections.emptyMap()`?
It's also kind of a nitpick, but I disagree with his preference for Guava's Maps.newHashMap() vs new HashMap<>(). I'm pretty sure the only reason those static methods exist is because pre-Java 7 didn't have the diamond operator.
[1] https://github.com/google/auto/tree/master/value