user_of_toster
@user_of_toster

Как вызвать метод у результата expression?

Такой код работает:
Long result = a.get(x) - a.get(b);
return result.intValue();

Почему нельзя вызвать метод у результата expression вот так?
return (a.get(x) - a.get(b)).intValue();
  • Вопрос задан
  • 44 просмотра
Решения вопроса 1
@Akela_wolf
Extreme Programmer
Потому что в Java есть объектные типы и примитивные типы. Выражение a.get() - b.get(), по видимости, имеет тип long, которой заворачивается (boxing) в тип Long в процессе присвоения переменной. У типа long, т.к. это примитивный тип, нет метода intValue(), поэтому его и нельзя вызвать. Можно сделать так:
Long a = 1L;
Long b = 2L;
Integer c = Math.toIntExact(a + b);

Либо перейти на Kotlin в котором таких проблем нет и у выражений точно также можно совершенно прозрачно вызывать методы.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы