Возвращаемый тип данных

Возвращаемый тип данных

Если метод возвращает результат, то тип результата должен быть совместим с типом, указанным в объявлении метода.


public class ReturnType {

    int getLetter(char s) {
        return s;
    }

    double getNumber(int a) {
        return ++a;
    }

    public static void main(String args[]) {
        ReturnType r = new ReturnType();
        System.out.println(r.getLetter('c')); // 99
        System.out.println(r.getNumber(5)); // 6.0
    }
}
При передаче параметров в метод и при возвращении значения из метода производится автоматическое безопасное приведение типов.


public class CompatibleReturnTypes {

    double sum(int first, short second, long third) {
        float sum = first + second + third;
        return sum;

    public static void main(String args[]) {
        CompatibleReturnTypes r = new CompatibleReturnTypes();
        short first = 1;
        byte second = 10;
        int third = 100;
        System.out.println(r.sum(first, second, third));
    }
}
Будет выведено 111.0. т.к. слагаемые приводятся к типу long, сумма к типу float, а возвращаемый результат к double.

Если типы не являются безопасно-приводимыми, то их несоответствие ожидаемым типам вызывает ошибку компиляции:


     float sum(int first, short second) {
       double sum = first+second;
       return sum; 
     }
Тип double безопасно не приводится к float, только явно: return (float)sum;

Следующий пример тоже вызовет ошибку компиляции:


double fourth = 1000.0;
System.out.println(r.sum(first, second, fourth));
Тип double безопасно не приводится к long, только явно: r.sum(first, second, (long)fourth).
Методы и Инкапсуляция