从int []到double []的隐式转换

时间:2012-10-01 21:19:03

标签: spring-el

我有两个功能

public static double avg(int[] values) {
    if(values == null || values.length == 0) return -1;
    double sum = 0;

    for(int value:values) {
        sum = sum + value;
    }
    return (sum/values.length);
}

public static double avg(double[] values) {
    if(values == null || values.length == 0) return -1;
    double sum = 0;

    for(double value:values) {
        sum = sum + value;
    }
    return (sum/values.length);
}

我正在使用Spel表达式引擎来评估表达式。 当我部署此代码并调用表达式avg({3,4,5})或avg({3.0,4.0,5.0})时,我得到以下错误,

Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1033E:(pos  0): Method call of 'avg' is ambiguous, supported type conversions allow multiple variants to match

在评估过程中int []数组是否隐式转换为double []?

我应该使它成为单一功能avg(double [] values)??

谢谢,

Vijay Bhore

1 个答案:

答案 0 :(得分:0)

{3,4,5}可以解释为整数数组或双精度数组。 使用double arr[] = {3,4,5}; avg(arr);int arr[] = {3,4,5}; avg(arr);并且tou应该没有错误