Задачу понял как решить, но не понял почему так происходит.
Ситуация 1:
return - находится только в блоке if и компилятор просит поставить return в конце. Как вынести общий return в конце не понятно.
Если объвить String и не проинициализировать, в теле if присвоить значение String, а потом попробывать её вернуть, пишет String не проинициализированна.
Ситуация 2:
Работает такой гибридный вариант как в коде сниpу.
Ситуация 3:
Работает даже если в начале проинициализировать String пустатой. В теле if - return. Возврат string.
Вопросы:
1)Почему Строку обязательно чем то проинициализировать?
2)Почему не возможно использовать блок return только в блоке if?
package com.javarush.task.task12.task1205;
/*
Определимся с животным
*/
public class Solution {
public static void main(String[] args) {
System.out.println(getObjectType(new Cow()));
System.out.println(getObjectType(new Dog()));
System.out.println(getObjectType(new Whale()));
System.out.println(getObjectType(new Pig()));
}
public static String getObjectType(Object o) {
//Напишите тут ваше решение
String s = "";
if(o instanceof Cow){
s = "Корова";
}
if(o instanceof Dog){
return "Собака";
}
if(o instanceof Whale){
return "Кит";
}
else if(o instanceof Pig){
return "Неизвестное животное";
}
return s;
}
public static class Cow {
}
public static class Dog {
}
public static class Whale {
}
public static class Pig {
}
}