@@ -127,6 +127,10 @@ static class ManagedTypesInstanceCodeFragment extends BeanRegistrationCodeFragme
127127 private final RegisteredBean source ;
128128 private final Lazy <Method > instanceMethod = Lazy .of (this ::findInstanceFactory );
129129
130+ private static final TypeName WILDCARD = WildcardTypeName .subtypeOf (Object .class );
131+ private static final TypeName CLASS_OF_ANY = ParameterizedTypeName .get (ClassName .get (Class .class ), WILDCARD );
132+ private static final TypeName LIST_OF_ANY = ParameterizedTypeName .get (ClassName .get (List .class ), CLASS_OF_ANY );
133+
130134 protected ManagedTypesInstanceCodeFragment (List <Class <?>> sourceTypes , RegisteredBean source ,
131135 BeanRegistrationCodeFragments codeFragments ) {
132136
@@ -161,8 +165,7 @@ boolean canGenerateCode() {
161165
162166 void generateInstanceFactory (Builder method ) {
163167
164- boolean allSourceTypesVisible = sourceTypes .stream ()
165- .allMatch (it -> AccessControl .forClass (it ).isPublic ());
168+ boolean allSourceTypesVisible = sourceTypes .stream ().allMatch (it -> AccessControl .forClass (it ).isPublic ());
166169
167170 ParameterizedTypeName targetTypeName = ParameterizedTypeName .get (InstanceSupplier .class , source .getBeanClass ());
168171
@@ -171,21 +174,25 @@ void generateInstanceFactory(Builder method) {
171174
172175 CodeBlock .Builder builder = CodeBlock .builder ().add ("return " ).beginControlFlow ("(registeredBean -> " );
173176
174- if (sourceTypes .isEmpty ()) {
175-
176- TypeName wildcard = WildcardTypeName .subtypeOf (Object .class );
177- TypeName classOfAny = ParameterizedTypeName .get (ClassName .get (Class .class ), wildcard );
178-
179- builder .addStatement ("var types = $T.<$T>emptyList()" , Collections .class , classOfAny );
177+ if (sourceTypes .isEmpty ()) {
178+ builder .addStatement ("$T types = $T.emptyList()" , LIST_OF_ANY , Collections .class );
180179 } else {
181- builder .addStatement ("var types = $T.of($L)" , List .class , toCodeBlock (sourceTypes , allSourceTypesVisible ));
180+ if (allSourceTypesVisible ) {
181+ builder .addStatement ("$T types = $T.of($L)" , LIST_OF_ANY , List .class ,
182+ toCodeBlock (sourceTypes , allSourceTypesVisible ));
183+ } else {
184+ TypeName listOfString = ParameterizedTypeName .get (ClassName .get (List .class ), ClassName .get (String .class ));
185+ builder .addStatement ("$T types = $T.of($L)" , listOfString , List .class ,
186+ toCodeBlock (sourceTypes , allSourceTypesVisible ));
187+ }
182188 }
183189
184190 if (allSourceTypesVisible ) {
185- builder .addStatement ("var managedTypes = $T.fromIterable($L)" , ManagedTypes .class , "types" );
191+ builder .addStatement ("$T managedTypes = $T.fromIterable($L)" , ManagedTypes . class , ManagedTypes .class , "types" );
186192 } else {
187193 builder .add (CodeBlock .builder ()
188- .beginControlFlow ("var managedTypes = $T.fromStream(types.stream().map(it ->" , ManagedTypes .class )
194+ .beginControlFlow ("$T managedTypes = $T.fromStream(types.stream().map(it ->" , ManagedTypes .class ,
195+ ManagedTypes .class )
189196 .beginControlFlow ("try" )
190197 .addStatement ("return $T.forName(it, registeredBean.getBeanFactory().getBeanClassLoader())" ,
191198 ClassUtils .class )
0 commit comments