Pull to refresh

Comments 16

Мм, спасибо, нагуглил на эту тему. Раз так, то особого смысла в этом нету, т.к. та ссылка что хранится в LinkedList.Node просто будет синтетическим полем, выигрыша не будет (
UFO just landed and posted this here
Ну мне, например, было неочевидно, гуглил я сугубо по хинту из первого комментария, так как гугление до того не дало результата.

Ну а раз вам все известно, я за вас только рад :)
Очень интересно только пока не могу представить для чего можно использовать.
ну можно строить списки как минимум, только проку от этого как выяснилось мало. Но по идее можно экономить на указателях в разветвленных структурах — деревьях или обычных однонаправленных графах.
Это простые вложенные классы. Это просто синтаксическая конструкция. Назначение у нее простое — сокрытие и группировка функциональности. Почему Вы их считаете рекурсивными?

Пример рекурсивной вложенности должен быть таким:
public class A {

private A memberA;
private A memberB;

}

Т.е. объект класса может содержать объекты своего же класса.
+1. Статья ничего нового не дает. Все это описано в спецификации языка.
да большинство статей на хабре где то да описано, вы сами то помните сколько будет (int)(char)(byte)-1?
byte в Java 8 бит, знаковый -> -1 в byte будет иметь вид 11111111. Char имеет диапазон в 2 байта т.е. в 16 бит -> получим 0000000011111111, что явно не превышает 65535. учитывая это и то, что char единственный беззнаковый тип в Java то это число при расширении в int будет положительным. и как следствие будет равняться 65535.
а вы спросили потому, что сами не знали ответа?
я спросил не потому что не знаю, а потому что вы не читаете jls на ночь
«получим 255», «явно не превышает», невероятная логика. Ответ правильный но я на 110% уверен что просто проверили. Желаю приятного чтения в поисках ответа
Забавно, но я вопроса не задавал, чтобы ответ искать. и с каких, собственно, пор -1 равняется 255? видимо кому-то кроме jls еще и двоичную систему повторить стоит.
родной, не я написал «т.е. в 16 бит -> получим 0000000011111111, что явно не превышает 65535», вот и я не могу понять с каких пор -1 равняется 255

как раз рекурсивность вложенных классов — интересный момент. Рекурсивные они потому что вы можете повторять эту цепочку инстансов сколько угодно раз динамически. «Просто» вложенные классы, как все их знают — это один, максимум два уровня вложенности, как вы и говорите для группировки функциональности.

В этом и тема топика — если внутренний класс наследуется от внешнего, то можно проделать такой вот рекурсивный финт с вложенностью — динамически создать сколько угодно длинную цепочку вложенных классов.

Для меня например это фича, которую я случайно открыл. Поскольку этот «извесный» трюк нигде в интернетах не описывался, я грешно подумал что это будет кому то интересно.
Теперь понял, что имелось в виду. Только такой вот способ не очень очевидный и не дай бог кому-нибудь такое увидеть.
Вообще по своему опыту скажу что вложенные классы это зло, пользы от них никакой (при компиляции кстати вложенный класс скомпилируется отдельным файлом), они только вносят путанецу в исходники и усложняют рефакторинг (особенно когда начинают использовать во вложеннном классе приватные поля и функции родителя). Возьмите за правило «новый класс — новый файл» это сильно упрощает жизнь.
Sign up to leave a comment.

Articles

Change theme settings