diff --git a/rewrite-java/src/main/java/org/openrewrite/java/tree/TypeUtils.java b/rewrite-java/src/main/java/org/openrewrite/java/tree/TypeUtils.java index 89034bd0985..a0a29a1a338 100644 --- a/rewrite-java/src/main/java/org/openrewrite/java/tree/TypeUtils.java +++ b/rewrite-java/src/main/java/org/openrewrite/java/tree/TypeUtils.java @@ -209,6 +209,8 @@ public static boolean isAssignableTo(@Nullable JavaType to, @Nullable JavaType f JavaType.Primitive toPrimitive = JavaType.Primitive.fromClassName(toFq.getFullyQualifiedName()); if (toPrimitive != null) { return isAssignableTo(toPrimitive, from); + } else if (toFq.getFullyQualifiedName().equals("java.lang.Object")) { + return true; } } return isAssignableTo(toFq.getFullyQualifiedName(), from); @@ -224,6 +226,13 @@ public static boolean isAssignableTo(@Nullable JavaType to, @Nullable JavaType f } } return true; + } else if (toGeneric.getVariance() == JavaType.GenericTypeVariable.Variance.CONTRAVARIANT) { + for (JavaType toBound : toBounds) { + if (!isAssignableTo(from, toBound)) { + return false; + } + } + return true; } return false; } else if (to instanceof JavaType.Variable) {