21_845 это оценка сверху при следующих допущениях:
Для полной инициализации одного элемента перечисления нужна только инструкции putstatic
Более выгодного по размеру кода способа инициализировать static final поле нет
Первое утверждение неверно, как и указано в статье:
На самом деле эта оценка завышена. Значение для записи в поле инструкция берёт с вершины стека, которое туда поместила одна из предыдущих инструкций. И эта инструкция тоже занимает драгоценные байты.
Как дело обстоит со вторым пунктом сейчас и в вероятном будущем — узнаете из заключительной статьи цикла.
Число 8_191 у автора твита получилось после дополнительных оптимизаций, которые не делает javac.
Затем они запретят хранить в облаке сначала криптоконтейнеры, а потом и белый шум из далёких галактик.
Чуть погодя подтянутся китайские производители и скажут, что они так делали всегда, а Apple всё у них украла. В докозательство покажут благодарственную грамоту от китайской разведки.
Мы с вами говорим об одном и том же, только по разному.
Нет, ваша позиция — «Это очень сложно, потому и не сделали», моя — «Руки не дошли, вот и не сделали».
В пользу моей точки зрения говорит JDK-8213076 Pattern matching for switch, который как раз и посвящён добавлению этой возможности в язык, а вовсе не объяснению того, что это слишком сложно сделать.
Им и со строками-то уже сильно выворачиваться пришлось.
Сомневаюсь, что реализация вызвала сколь-нибудь серьёзные трудности. Принять решение — да, пришлось.
Складывается такое впечатление, что главное — это принять решение, а выполнимо ли оно с заданным качеством — «дело десятое»…
Не нужно передёргивать, я говорил про байткод. На уровне байткода этот switch вполне может выродиться в пару invokedynamic/tableswitch, которые JIT заменит на intrinsics.
Синтаксический сахар это совсем не космические технологии.
Датчики, как я понял, передают данные по Bluetooth.
Почему бы злобным хакерам не ограничиваться патчами, а полностью отреверсить протокол и, заперевшись в чистой комнате, написать OSS-замену этому недостаточно Libre Link?
Иными словами, на этапе компиляции значение данного выражения не может быть определено. Именно поэтому оно и не может быть использовано в case.
Class literal в case нельзя использовать потому, что в JLS11 §14.11 его поддержка не заявлена:
The type of the Expression must be char, byte, short, int, Character, Byte, Short, Integer, String, or an enum type (§8.9), or a compile-time error occurs
java.lang.Class в списке разрешённых типов отсутствует, точка.
Добавят в спецификацию разрешение использовать java.lang.Class — допилят и компилятор и VM.
В какой конкретно байткод это будет транслироваться — дело десятое.
P.S. Class literals, хоть тот же String.class, на уровне байткода вполне себе загружаются из пула констант.
Дисклеймер: все эти манипуляции полезно делать исключительно в обучающих целях, для экспериментов по машинлёнингу. Пожалуйста, никогда не читерите в соревновательных ладдерах реальных игр.
Какой-то вы пуганный, дисклеймерами так и сыпите.
Словно не с нейросетями побаловаться предлагаете, а конституционную монархию свергнуть.
Не у одного.
Быстро открыть диалог, вставить путь из буфера обмена и сразу нажать на «ОК» — сейчас это что-то из области фантастики.
Всегда присутствует дополнительный этап «мы будем долго шуршать диском и строить никому не нужное дерево».
Если сильно не повезёт, то случается ситуация «что-то я в своём дереве такого пути не вижу, идите лесом». Пока диалог не найдёт введённый путь в своём дереве, через «ОК» его закрыть нельзя, только через «Отмену».
Картинки со звуком!
Сам хит-парад ошибок, увы, скучный. Копипаст и невнимательность.
Хотелось ошибок хотя бы такого уровня.
Кстати, PVS-Studio ошибку из статьи по ссылке найдёт?
Вы, верно, на версию двухгодичной давности смотрите?
Примерно в версии 2018.3 заботливые УХУИ-специалисты похерили нормальные контрастные иконки и заменили их на нечто, больше всего напоминающее осеннюю слякоть под подошвами сапог.
Зависимость от количества элементов не совсем линейна, небольшой спойлер из второй части:
21_845 это оценка сверху при следующих допущениях:
putstaticstatic finalполе нетПервое утверждение неверно, как и указано в статье:
Как дело обстоит со вторым пунктом сейчас и в вероятном будущем — узнаете из заключительной статьи цикла.
Число 8_191 у автора твита получилось после дополнительных оптимизаций, которые не делает
javac.Чуть погодя подтянутся китайские производители и скажут, что они так делали всегда, а Apple всё у них украла. В докозательство покажут благодарственную грамоту от китайской разведки.
Нет, ваша позиция — «Это очень сложно, потому и не сделали», моя — «Руки не дошли, вот и не сделали».
В пользу моей точки зрения говорит JDK-8213076 Pattern matching for switch, который как раз и посвящён добавлению этой возможности в язык, а вовсе не объяснению того, что это слишком сложно сделать.
Сомневаюсь, что реализация вызвала сколь-нибудь серьёзные трудности. Принять решение — да, пришлось.
Не нужно передёргивать, я говорил про байткод. На уровне байткода этот
switchвполне может выродиться в паруinvokedynamic/tableswitch, которые JIT заменит на intrinsics.Синтаксический сахар это совсем не космические технологии.
Датчики, как я понял, передают данные по Bluetooth.
Почему бы злобным хакерам не ограничиваться патчами, а полностью отреверсить протокол и, заперевшись в чистой комнате, написать OSS-замену этому недостаточно Libre Link?
Class literal в
caseнельзя использовать потому, что в JLS11 §14.11 его поддержка не заявлена:java.lang.Classв списке разрешённых типов отсутствует, точка.Добавят в спецификацию разрешение использовать
java.lang.Class— допилят и компилятор и VM.В какой конкретно байткод это будет транслироваться — дело десятое.
P.S. Class literals, хоть тот же
String.class, на уровне байткода вполне себе загружаются из пула констант.Какой-то вы пуганный, дисклеймерами так и сыпите.
Словно не с нейросетями побаловаться предлагаете, а конституционную монархию свергнуть.
Нет ни Java, ни Brainfuck?
Эти пришельцы безнадёжны, не стоит тратить на них время.
КДПВ похожа на эволюцию гематомы с переходом в новом свете в некроз.
Generics, полноценная поддержка Unicode — уже пары этих пунктов достаточно, чтобы забыть D5 как страшный сон.
Компания существует исключительно в воображении пиарщика, родившего этот унылый текст.
А Порфирьевич-то — планетолётчик!
«А это идея!», подумали контрабандисты.
Быстро открыть диалог, вставить путь из буфера обмена и сразу нажать на «ОК» — сейчас это что-то из области фантастики.
Всегда присутствует дополнительный этап «мы будем долго шуршать диском и строить никому не нужное дерево».
Если сильно не повезёт, то случается ситуация «что-то я в своём дереве такого пути не вижу, идите лесом». Пока диалог не найдёт введённый путь в своём дереве, через «ОК» его закрыть нельзя, только через «Отмену».
Картинки со звуком!
Сам хит-парад ошибок, увы, скучный. Копипаст и невнимательность.
Хотелось ошибок хотя бы такого уровня.
Кстати, PVS-Studio ошибку из статьи по ссылке найдёт?
Вы, верно, на версию двухгодичной давности смотрите?
Примерно в версии 2018.3 заботливые УХУИ-специалисты похерили нормальные контрастные иконки и заменили их на нечто, больше всего напоминающее осеннюю слякоть под подошвами сапог.
Все пользователи этому были очень рады и даже написали более сотни комментариев с благодарностями.
Как, предположительно, могло выглядеть задание на создание данного служебного произведения:
Мы ведь замену слову «кейс» ищем, а не наоборот.
Операция
<X> идеально подходит в качестве замены для <Y>не обязана быть коммутативной.«Случай», идеально же подходит.
«Был у нас на производстве такой случай...».