Добрый день, объясните пож как работает этот метод? Не понимаю.
ок, мы создали локальный класс, который имплементит интерфейс Sayable, так как Cat его не имплементирует. Ок фишка в том что мы можем использовать переменные Cat name . Но я вот не понимаю мы создаем объект в котором в зависимости от i будет либо
if (i < 1) return name + " спит.";
либо:
else {
StringBuilder str = new StringBuilder();
for (int j = 0; j < i; j++) {
str.append("я");
}
return name + " говорит м" + str + "у!";
Потом мы добавляем этот объект в список и в списке вызываем этот метод Say
:for (int i = 0; i < pets.size(); i++) {
System.out.println(pets.get(i).say());
}
Так вот я может туплю но не могу никак понять как он у объекта определяет какую строку вернуть если i то я здесь не передаю?????
public Sayable toSayable(final int i) {
class CatPet implements Sayable {
@Override
public String say() {
if (i < 1) return name + " спит.";
else {
StringBuilder str = new StringBuilder();
for (int j = 0; j < i; j++) {
str.append("я");
}
return name + " говорит м" + str + "у!";
}
}
}
CatPet catPet = new CatPet();
return catPet;
}