Почему функция вычисления не выдает ошибку при преобразовании Integer в double? - PullRequest
0 голосов
/ 11 февраля 2020

Почему приведенный ниже код работает нормально и не жалуется на то, что возвращаемым типом функции является целое число вместо двойного?

    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 Ответ

2 голосов
/ 11 февраля 2020

Это произошло потому, что java автоматически конвертирует типы, если это не приводит к потере точности. Он может конвертировать int в double, но не конвертировать double в int, потому что десятичная часть будет потеряна (но, конечно, вы можете сделать это вручную). Вы можете прочитать об этом здесь https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html

...