Реализация интерфейса используя локальный класс

  • 13
  • Недоступна
В классе Cat реализуй логику метода toSayable, которая описана в джавадоке.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (53)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Pavel36 уровень, Санкт-Петербург
15 апреля, 16:47
Не понимаю, как объект Sayable который возвращает Cat.toSayable() помнит значение аргумента i ? Я бы всё понял если бы наш класс имел переменную final int i, но её нет. Как он помнит/хранит переданное значение? Не понимаю.
Cheetah25 уровень, Санкт-Петербург
позавчера, 18:50
Занятно. Судя по дебагу, во время конвертации класс CatPet получает поле i. i - локальная переменная метода toSayable. Похоже на особенность жизни объектов method-local-inner классов. Объект такого класса включает переменные внешнего метода помимо ссылки на внешний объект.
Cheetah25 уровень, Санкт-Петербург
позавчера, 22:29
Нашлось подтверждение в 7 лекции
Alexey28 уровень, Минск
1 апреля, 15:13
6018. Завис на том где взять имя текущей животинки. Колупал список, пока не увидел поле name в классе Cat :)))
- Идиот.
- Согласен.
Даниил26 уровень
7 апреля, 11:38
6041
Sergey26 уровень, Санкт-Петербург
1 апреля, 03:56
6014, получается, что задачу решают около 5 человек в день
Antony.Glim29 уровень, Санкт-Петербург
17 марта, 07:52
5942
Андрей27 уровень, Самара
12 февраля, 08:30
Может кто понял этот момент, но зачем нам объявлять вообще примитивные типы final, они же являются immutable классами, неизменяемыми, по сути в локальном классе ссылка на них уже меняет клона а не тот i что объявлен в методе.
Илья26 уровень
28 марта, 10:40
Полагаю, потому что локальный класс не копирует себе значение примитива, а пользуется именно самой переменной, которая не должна изменяться. А immutable сделан String. И сделан для того, чтобы рационально использовать память и в то же время обращаться с ним как с примитивом
Vitaly Khan36 уровень
26 декабря 2018, 10:58
валидатор принимает и вариант с анонимным классом.
Владик Жучков36 уровень, Харьков
10 ноября 2018, 22:32
дебилизм какой то! в Intellij IDEA из - за долбанной кодировки потратил впустую 10 попыток, а на этом сайте заработало и сдана работа! подскажите мне как сделать с кодировкой...
SpacePurr28 уровень, Казань
19 сентября 2018, 20:33
String ya = "";
for (int j = 0; j < i; j++) {
    ya = ya.concat("я");
}
return String.format("%s говорит м%sу!", name, ya);
Люди добрые, будьте милосердны, подайте вариант оптимальнее и лучше
MyLuk36 уровень, Москва
14 октября 2018, 12:01
Умножение/повторение строки
new String(new char[i]).replace("\0", "я")
Где i сколько раз повторить строку Либо для Java11
String str = "abc";
String repeated = str.repeat(3);
repeated.equals("abcabcabc");
https://stackoverflow.com/questions/1235179/simple-way-to-repeat-a-string-in-java
Gagarin28 уровень, Санкт-Петербург
4 декабря 2018, 13:30
Оптимальнее использовать StringBuilder, наверное
Джонни35 уровень
5 декабря 2018, 16:24
Вот я так же сделал через циклы, поэтому и полез посмотреть кто как удлинял букву "я". Обалденный метод в java11 появился! Я в восторге!
Сергей36 уровень, Нижний Новгород
15 декабря 2018, 21:19
Вот еще вариант со stackoverflow
char[] chars = new char[i];
Arrays.fill(chars, 'я');
return String.format("%s говорит м%sу!", name, new String(chars));
по скорости он должен быть лучше replace и StringBuilder
Джонни35 уровень
18 декабря 2018, 15:46
Очень интересный вариант!
S3R3N1TY33 уровень, Санкт-Петербург
3 марта, 18:13
Прикольный способ)
Mykhailo Hriha28 уровень, Львов
7 сентября 2018, 14:42
Не особо вникаю в имеющийся код, пишу, сдаю.. Такое отношение мне потом аукнется? Стоит ли разжевывать весь код?
SpacePurr28 уровень, Казань
19 сентября 2018, 20:34
жуй)
Александр40 уровень, Санкт-Петербург
15 мая 2018, 18:33
StringUtils.repeat("я",i) кто может подсказать как использовать?