diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/ClassGetClassInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/ClassGetClassInspection.java index bc5121f06e18..7a449a72d9da 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/ClassGetClassInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/ClassGetClassInspection.java @@ -24,7 +24,8 @@ public class ClassGetClassInspection extends AbstractBaseJavaLocalInspectionTool if (!OBJECT_GET_CLASS.test(call)) return; // Sometimes people use xyz.getClass() for implicit NPE check. While it's a questionable code style // do not warn about such case - if (call.getParent() instanceof PsiExpressionStatement) return; + if (call.getParent() instanceof PsiExpressionStatement && + !(call.getParent().getParent() instanceof PsiSwitchLabeledRuleStatement)) return; PsiExpression qualifier = call.getMethodExpression().getQualifierExpression(); if (qualifier == null) return; PsiType type = qualifier.getType(); diff --git a/java/java-tests/testData/inspection/classGetClass/afterClassGetClassExpressionSwitch.java b/java/java-tests/testData/inspection/classGetClass/afterClassGetClassExpressionSwitch.java new file mode 100644 index 000000000000..d67482aef8a5 --- /dev/null +++ b/java/java-tests/testData/inspection/classGetClass/afterClassGetClassExpressionSwitch.java @@ -0,0 +1,8 @@ +// "Remove 'getClass()' call" "true" +public class Main { + Class test(Class obj) { + return switch(obj.hashCode()) { + default -> obj; + }; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/classGetClass/beforeClassGetClassExpressionSwitch.java b/java/java-tests/testData/inspection/classGetClass/beforeClassGetClassExpressionSwitch.java new file mode 100644 index 000000000000..67f3b84dde77 --- /dev/null +++ b/java/java-tests/testData/inspection/classGetClass/beforeClassGetClassExpressionSwitch.java @@ -0,0 +1,8 @@ +// "Remove 'getClass()' call" "true" +public class Main { + Class test(Class obj) { + return switch(obj.hashCode()) { + default -> obj.getClass(); + }; + } +} \ No newline at end of file