This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.
- Run all maven commands under this repository folder
- Import this repository folder as an existing project in IntelliJ
- Configure the Language level (under Project Structure -> Modules -> Sources) to 8
- Set workspace to the parent folder of this repository
- Import this repository folder as an existing Maven project in Eclipse
- Configure the project Java compiler compliance level to 1.8
- Set the JRE libraries to JRE 1.8
- "Ignore optional compiler problems" in "Java Build Path" for "target/generated-sources/**/*.java"
Our version strategy just follows the maven package version convention: <major>.<minor>.<hotfix>-<prerelease>
, where:
<major>
: Increasing when incompatible breaking changes happened<minor>
: Increasing when new features added<hotfix>
: Increasing when a hotfix is pushed<prerelease>
: A string representing a pre-release version
Use SNAPSHOT
pre-release tag for packages under development. Here is the sample workflow:
- Initially the package version is
1.0-SNAPSHOT
. There is no hotfix for SNAPSHOT - Modify the version to
1.0.0-ALPHA
for internal testing purpose. Notice the hotfix exists here - After several BUG fixes, update the version to
1.0.0
. - Create a new development version
1.1-SNAPSHOT
. - Make a new hotfix into
1.0-SNAPSHOT
, and release to version1.0.1
. - New features are added to
1.1-SNAPSHOT
.
Every time you release a non-development version (like 1.0.0-ALPHA
or 1.0.1
), you also need to update the tag in your git repository.
Primitives have two different type definitions, for example: int.class
(which is identical to Integer.TYPE
) is not Integer.class
.
All Java types are represented by Type
interface, which may be one of the following implementations:
Class<?>
: normal class type likeString
ParameterizedType
: generic class type likeList<Integer>
WildcardType
: generic argument contains question mark like? extends Number
TypeVariable<?>
: generic argument likeT
GenericArrayType
: generic array likeT[]
For the generic type behaviors (including compile-time validation and runtime type erasure) in Java, please refer to Generics in the Java Programming Language .