|
24 | 24 | import java.util.Collection; |
25 | 25 | import java.util.List; |
26 | 26 | import java.util.Map; |
| 27 | +import java.util.concurrent.atomic.AtomicReference; |
27 | 28 | import java.util.function.BiConsumer; |
28 | 29 | import java.util.function.BiFunction; |
29 | 30 | import java.util.function.Consumer; |
@@ -192,7 +193,12 @@ else if (Function.class.isAssignableFrom(pojoFunctionClass) || BiFunction.class. |
192 | 193 | public static Type discoverFunctionTypeFromClass(Class<?> functionalClass) { |
193 | 194 | if (KotlinDetector.isKotlinPresent()) { |
194 | 195 | if (Function1.class.isAssignableFrom(functionalClass)) { |
195 | | - return TypeResolver.reify(Function1.class, (Class<Function1<?, ?>>) functionalClass); |
| 196 | + try { |
| 197 | + return TypeResolver.reify(Function1.class, (Class<Function1<?, ?>>) functionalClass); |
| 198 | + } |
| 199 | + catch (Exception e) { |
| 200 | + return discoverFunctionTypeFromFunctionMethod(discoverFunctionalMethod(functionalClass)); |
| 201 | + } |
196 | 202 | } |
197 | 203 | else if (Function0.class.isAssignableFrom(functionalClass)) { |
198 | 204 | return TypeResolver.reify(Function0.class, (Class<Function0<?>>) functionalClass); |
@@ -252,10 +258,11 @@ public static Type discoverFunctionTypeFromFunctionMethod(Method functionMethod) |
252 | 258 | Assert.isTrue( |
253 | 259 | functionMethod.getName().equals("apply") || |
254 | 260 | functionMethod.getName().equals("accept") || |
255 | | - functionMethod.getName().equals("get"), |
| 261 | + functionMethod.getName().equals("get") || |
| 262 | + functionMethod.getName().equals("invoke"), |
256 | 263 | "Only Supplier, Function or Consumer supported at the moment. Was " + functionMethod.getDeclaringClass()); |
257 | 264 |
|
258 | | - if (functionMethod.getName().equals("apply")) { |
| 265 | + if (functionMethod.getName().equals("apply") || functionMethod.getName().equals("invoke")) { |
259 | 266 | return ResolvableType.forClassWithGenerics(Function.class, |
260 | 267 | ResolvableType.forMethodParameter(functionMethod, 0), |
261 | 268 | ResolvableType.forMethodReturnType(functionMethod)).getType(); |
|
0 commit comments