Add primitive classes to package java.lang
#905
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
So far primitive types like
int
have been in the default package""
, since theirPackage
object from the Reflection API isnull
and that seemed like the best matching ArchUnit version (since ArchUnit does not usenull
within the public API and the choice would then just have been to make theJavaPackage
Optional
just because of a couple of corner cases). Starting with Java 9 the Reflection API introduced a new methodClass.getPackageName()
though, which would returnjava.lang
for primitives and the package of the component type for arrays. Luckily for arrays ArchUnit is already consistent, because we decided long ago that this behavior for the package name would make sense. This commit now makes the package of primitives again consistent with the Reflection API by putting primitive types into the packagejava.lang
.This is a breaking change in the sense that users who have ignored the default package
""
for their rules to exclude primitives will now potentially see them again (except if they also excludedjava.lang
).