Properly use declaration-site type variance
org.openrewrite.staticanalysis.DeclarationSiteTypeVariance
Currently, Java requires use-site type variance, so if someone has Function<IN, OUT>
method parameter, it should rather be Function<? super IN, ? extends OUT>
. Unfortunately, it is not easy to notice that ? super
and ? extends
is missing, so this recipe adds it where that would improve the situation.
Recipe source
GitHub, Issue Tracker, Maven Central
groupId: org.openrewrite.recipe
artifactId: rewrite-static-analysis
version: 1.5.0
Options
Type | Name | Description | Example |
---|---|---|---|
| variantTypes | A list of well-known classes that have in/out type variance. |
|
| excludedBounds | Optional. A list of bounds that should not receive explicit variance. Globs supported. |
|
| excludeFinalClasses | Optional. If true, do not add |
Usage
This recipe has required configuration parameters. Recipes with required configuration parameters cannot be activated directly. To activate this recipe you must create a new recipe which fills in the required parameters. In your rewrite.yml
create a new recipe with a unique name. For example: com.yourorg.DeclarationSiteTypeVarianceExample
. Here's how you can define and customize such a recipe within your rewrite.yml:
Now that com.yourorg.DeclarationSiteTypeVarianceExample
has been defined activate it and take a dependency on org.openrewrite.recipe:rewrite-static-analysis:1.5.0 in your build file:
Add the following to your
build.gradle
file:
Run
gradle rewriteRun
to run the recipe.
See how this recipe works across multiple open-source repositories
The community edition of the Moderne platform enables you to easily run recipes across thousands of open-source repositories.
Please contact Moderne for more information about safely running the recipes on your own codebase in a private SaaS.
Contributors
Last updated