Guide to Google AutoValue
AutoValue runs inside javac as a standard annotation processor.
Use Builder when there too many parameters or same type.
@AutoValue
public abstract class Foo {
public static Foo create(String text, int number) {
// defensive copies, preconditions
return new AutoValue_Foo(text, number);
}
public abstract String text(); // or getText(), if you like
public abstract int number();
}
Set a default value for a property
static Builder builder() {
return new AutoValue_Foo.Builder()
.setSomeIntegerField(1).setSomeImmutableSetFeild(ImmutableSet.of());
}
@Nullable properties
toBuilder
AutoValue.Builder
@AutoValue
public abstract class Foo {
static Builder builder() {
return new AutoValue_Foo.Builder();
}
public abstract String text(); // or getText(), if you like
public abstract int number();
@AutoValue.Builder
abstract static class Builder {
abstract Builder text(String value);
abstract Builder number(int value);
abstract Foo build();
}
}
Optional properties
public abstract Optional<String> optionalProperty();
@AutoValue.Builder
public abstract static class Builder {
public abstract Builder SetOptionalProperty(String optionalProperty);
}
autoBuild
@AutoValue.Builder
public abstract static class Builder {
abstract Animal autoBuild();
public Animal build() {
// we can do validation, or normalization, or any other logic here.
return autoBuild();
}
}
Misc
- Use immutable properties.
- We can perform validations at create factory or build method.
- We can write our own equals or hashcode methods.
Resource
How to Improve Problem Solving Skills - A Developer's Guide
How to Improve Problem Solving Skills
Jeffery Yuan
April 24, 2019
Subscribe to:
Posts (Atom)
Labels
adsense
(5)
Algorithm
(69)
Algorithm Series
(35)
Android
(7)
ANT
(6)
bat
(8)
Big Data
(7)
Blogger
(14)
Bugs
(6)
Cache
(5)
Chrome
(19)
Code Example
(29)
Code Quality
(7)
Coding Skills
(5)
Database
(7)
Debug
(16)
Design
(5)
Dev Tips
(63)
Eclipse
(32)
Git
(5)
Google
(33)
Guava
(7)
How to
(9)
Http Client
(8)
IDE
(7)
Interview
(88)
J2EE
(13)
J2SE
(49)
Java
(186)
JavaScript
(27)
JSON
(7)
Learning code
(9)
Lesson Learned
(6)
Linux
(26)
Lucene-Solr
(112)
Mac
(10)
Maven
(8)
Network
(9)
Nutch2
(18)
Performance
(9)
PowerShell
(11)
Problem Solving
(11)
Programmer Skills
(6)
regex
(5)
Scala
(6)
Security
(9)
Soft Skills
(38)
Spring
(22)
System Design
(11)
Testing
(7)
Text Mining
(14)
Tips
(17)
Tools
(24)
Troubleshooting
(29)
UIMA
(9)
Web Development
(19)
Windows
(21)
xml
(5)