为什么在将Integer转换为double时,计算功能没有给出错误?

时间:2020-02-11 04:57:23

标签: java function integer double

为什么下面的代码工作正常,并且没有抱怨Function的返回类型是Integer而不是Double?

    public static void main(String[] args) {
          double principle = 100;         
          int interestrate = 5;         
          double amount = compute(principle, x->x*interestrate);
    }
    public static double compute(double base, Function<Integer, Integer > func){ 
        return func.apply((int)base); 
    }

1 个答案:

答案 0 :(得分:1)

之所以发生,是因为Java在不导致准确性下降的情况下自动转换类型。它可以将int转换为double,但不能将double转换为int,因为小数部分将丢失(但是您当然可以手动执行)。 您可以在这里https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html

进行阅读