Pull to refresh
179
0
Станислав Суров @Perlovich

Scala Developer

Send message
Они не разрушают пользу от енамов. Поля (разумеется, константные) в енамах — это удобно. Это широко используется, например, в Java. Позволяет избавиться от лишних условных конструкций в коде.
А баги — это жуки)

en.wiktionary.org/wiki/ecosystem — английский викисловарь говорит, что можно так употреблять это слово.
Ну и если вдруг стабильная компания внезапно умирает, а так тоже бывает, то на рынке труда с java 7 будет сложновато.


Мне кажется, здесь вы преувеличиваете. Java 8 (которая сейчас LTS) не сильно отличается от Java 7. Streams API, Optional, лямбды — осиливаются за вечер-два. И вряд ли для потенциального работодателя отсутствие опыта работы с Java8+ будет принципиальным.

Java фреймворки тоже не то, чтобы должны были сильно поменяться между Java 7 и 8.

В общем, для Java разработчиков даже близко нет такой сильной проблемой с устареванием инструментов, как для JavaScript девелоперов.
Заучивая употребление без контекста вы катастрофически выхолащиваете смысл.


Тем не менее, это не повод совсем отказываться от интервального повторения. Для комфортного взаимодействия с материалами на иностранном языке (книги, аудиокниги, фильмы, игры и т.д.) необходимо знание очень большого количества слов. Большую часть этих слов вам навряд ли потребуется употребить в речи. Достаточно уметь их узнавать. Это уже сделает чтение/прослушивание гораздо более приятным.
В поисках правды я обратился к Oracle документации по Java: docs.oracle.com/javase/specs/index.html

Спецификация языка Java согласна с Вами и утверждает, что строки в switch сравниваются через equals: docs.oracle.com/javase/specs/jls/se10/html/jls-14.html#jls-14.11.

If one of the case constants is equal to the value of the expression, then we say that the case label matches. Equality is defined in terms of the == operator (§15.21) unless the value of the expression is a String, in which case equality is defined in terms of the equals method of class String.


Но в JVM спецификации написано следующее — docs.oracle.com/javase/specs/jvms/se10/html/jvms-3.html#jvms-3.10:

The Java Virtual Machine's tableswitch and lookupswitch instructions operate only on int data. Because operations on byte, char, or short values are internally promoted to int, a switch whose expression evaluates to one of those types is compiled as though it evaluated to type int.


Строки прямо не упомянуты. Но все остальные типы приводятся к int. Что делает версию с проверкой строки по хэшкоду весьма правдоподобной.

Не получив четкого ответа из доков, начал компилить и декомпилить. У меня HotSpot JVM 1.8. При декомпиляции switch по String видно, что используется и hashcode и equals:

switch(name.hashCode()) {
        case 3556498:
            if (name.equals("test")) {
                // здесь код
            }
и спасибо, что есть такие мнения, из-за них у нас (пентестеров) всегда будут простые и быстрые проекты.


Какие именно мнения? Что необходимо вести в проекте четко прописанную политику относительно security решений? Что все security механизмы нужно подвергать тестированию, как и обычную бизнес-логику? Что не нужно без необходимости городить монстроузные слои, которые дублируют друг друга и которые сложно понимать и поддерживать?

Рискну предположить, что Вы увидели в статье не совсем то, что я хотел донести.
12 ...
16

Information

Rating
Does not participate
Date of birth
Registered
Activity