diff --git a/spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java b/spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java index 7433cbbfec5..099d2829000 100644 --- a/spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java +++ b/spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java @@ -71,7 +71,7 @@ public class BindingReflectionHintsRegistrar { } private boolean shouldSkipMembers(Class type) { - return type.getCanonicalName().startsWith("java.") || type.isArray(); + return (type.getCanonicalName() != null && type.getCanonicalName().startsWith("java.")) || type.isArray(); } private void registerReflectionHints(ReflectionHints hints, Set seen, Type type) { diff --git a/spring-core/src/test/java/org/springframework/aot/hint/BindingReflectionHintsRegistrarTests.java b/spring-core/src/test/java/org/springframework/aot/hint/BindingReflectionHintsRegistrarTests.java index 4bd9ced5f48..760b235f5c8 100644 --- a/spring-core/src/test/java/org/springframework/aot/hint/BindingReflectionHintsRegistrarTests.java +++ b/spring-core/src/test/java/org/springframework/aot/hint/BindingReflectionHintsRegistrarTests.java @@ -221,6 +221,12 @@ public class BindingReflectionHintsRegistrarTests { }); } + @Test + void registerTypeForSerializationWithAnonymousClass() { + Runnable anonymousRunnable = () -> { }; + bindingRegistrar.registerReflectionHints(this.hints.reflection(), anonymousRunnable.getClass()); + } + @Test void registerTypeForJacksonAnnotations() { bindingRegistrar.registerReflectionHints(this.hints.reflection(), SampleClassWithJsonProperty.class);