diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaPsiUtil.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaPsiUtil.java
index e47508efb755..c98ff2e10ed6 100644
--- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaPsiUtil.java
+++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaPsiUtil.java
@@ -273,7 +273,16 @@ public final class DfaPsiUtil {
if (eachType instanceof PsiClassType classType && !local) {
PsiElement context = classType.getPsiContext();
if (context != null) {
- return NullableNotNullManager.getInstance(context.getProject()).findDefaultTypeUseNullability(context);
+ NullableNotNullManager manager = NullableNotNullManager.getInstance(context.getProject());
+ NullabilityAnnotationInfo typeUseNullability = manager.findDefaultTypeUseNullability(context);
+ if (typeUseNullability != null) {
+ return typeUseNullability;
+ }
+ PsiClass declaration = PsiUtil.resolveClassInClassTypeOnly(classType);
+ if (declaration instanceof PsiTypeParameter typeParameter && typeParameter.getExtendsList().getReferenceElements().length == 0) {
+ // If there's no bound, we assume an implicit `extends Object` bound, which is subject to default annotation if any.
+ return manager.findDefaultTypeUseNullability(declaration);
+ }
}
}
return null;
diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/JSpecifyReturnFromParameterized.java b/java/java-tests/testData/inspection/dataFlow/fixture/JSpecifyReturnFromParameterized.java
index 2090ea1031e5..953507d376a4 100644
--- a/java/java-tests/testData/inspection/dataFlow/fixture/JSpecifyReturnFromParameterized.java
+++ b/java/java-tests/testData/inspection/dataFlow/fixture/JSpecifyReturnFromParameterized.java
@@ -23,13 +23,13 @@ class ReturnFromParameterizedNullMarked {
return null;
}
};
- Callable callable2 = () -> null;
+ Callable callable2 = () -> null;
R r = new Callable() {
@Override
public R call() throws Exception {
return null;
}
}.call();
- R r2 = ((Callable) () -> null).call();
+ R r2 = ((Callable) () -> null).call();
}
}
\ No newline at end of file