java - 方法返回 Double 而不是 Integer

标签 java

  private Integer[] array = new Integer[]{1, 2, 3, 4};

    Number getValueByIndex(int index)
    {
        return (index >= 0 && index < array.length) ? array[index] : new Double(-1);
    }

    public static void main(String[] args)
    {
        Number value1 = new Solution().getValueByIndex(5); //-1.0, class java.lang.Double expected
        Number value2 = new Solution().getValueByIndex(2); //3, class java.lang.Integer expected

        System.out.println(value1 + ", " + value1.getClass().toString());
        System.out.println(value2 + ", " + value2.getClass().toString());
    }

我不明白为什么在第二种情况下该方法返回 Double 而不是 Integer。

最佳答案

这是因为条件表达式中使用了两种不同的类型(可转换为数值类型)作为第二个和第三个操作数。

这里解释了如何确定条件表达式的类型:http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.25

关于java - 方法返回 Double 而不是 Integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36231599/

相关文章:

java - 如何创建 ArrayListMultiMap?

java - App 引擎和 Scala

java - 不创建或检索 JPA 条目

java - Kotlin 扩展属性

java - 使用 Scanner 在 for 循环中逐字母分析字符串(抛出 IndexOutOfBoundExceptions)

java - 在JSP中使用JavaBean时出现异常

Javafx 如何绑定(bind)到属性列表

java - 使用 BrowserLauncher 2 打开 URl 时,Acegi 抛出 AuthenticationCredentialsNotFoundException

java - 谷歌应用引擎 : How to uniquely identify JVMs instances/measure parallelism?

java - Jmeter进行QPS测试好像不精确?