有没有办法在SpEL中调用静态接口方法? 例如:
T(java.util.stream.IntStream).of(new Integer[]{1,2,3}).sum()
当我运行此操作时,我收到此错误:Problem locating method of on type class java.lang.Class
答案 0 :(得分:3)
您缺少向我们展示更多堆栈跟踪:
Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1033E: Method call of 'of' is ambiguous, supported type conversions allow multiple variants to match
at org.springframework.expression.spel.support.ReflectiveMethodResolver.resolve(ReflectiveMethodResolver.java:211)
它无法在运行时通过反射解析正确的方法,因为of()
中有多个IntStream
方法。
这对我有用:
ExpressionParser parser = new SpelExpressionParser();
Expression expression = parser.parseExpression("T(java.util.stream.IntStream).of(1,2,3).sum()");
assertThat(expression.getValue()).isEqualTo(6);
答案 1 :(得分:1)
需要"T(java.util.stream.IntStream).of(new int[]{1,2,3}).sum()"
。
(int[]
不是Integer[]
)。
问题是有两种of()
方法需要从Integer[]
转换,所以你得到了
引起:org.springframework.expression.spel.SpelEvaluationException:EL1033E:'of'的方法调用不明确,支持的类型转换允许多个变体匹配