Скрытые возможности в Java

3
17442
Добавить в избранное

В этой статье вы сможете открыть для себя несколько удивительных, а иногда и странных фактов, которые имеют место в Java.

Несмотря на то, что Java признан очень мощным и надежным языком, его также считают простым для изучения. После года активного написания программ на Java для вас не должно остаться секретов. Но, оказывается, этому языку всё ещё есть, чем нас удивить. Перед вами своеобразный рейтинг нетривиальных возможностей в Java.

java duke

1. Double brace

В этом рейтинге с большим отрывом лидирует «double brace». Здесь можно найти подробное описание метода. Это самое забавное и не очевидное из списка. Однако метод имеет свои минусы в виде анонимного класса на каждое использование этого метода, а также невозможности использования метода equals() для подобных объектов.

2. ThreadLocal

ThreadLocal — незаслуженно забытый класс, существующий ещё с версии 1.2. Он стал даже более привлекательным, подружившись с generics. Класс позволяет иметь различное значение для каждого из потоков с использованием только одной переменной. Описание по ссылке.

3. Instance Initializers

Если эта возможность ушла от вашего взгляда — тогда пример ниже отлично и без лишних слов продемонстрирует её.

 

Выполним:

 

На выходе получим:

4. Именованные блоки и метки в Java

Нечто малоиспользуемое, однако всё так же компилируемое:

Здесь также вспоминается факт о зарезервированных словах const и goto, которые являются ключевыми, однако использовать их нельзя. Ещё метки дают забавный эффект. Код ниже отлично компилируется (отлично громко сказано, компилятор такое без ворчания не пропустит).

5. Enum — это класс

И в нем можно определить конструктор, статические и не очень методы. А также у любого enum есть методы, которые возвращают все значения, а по строковому имени элемента возвращают объект:

6 Finally и return

finally может “съесть” любой эксепшн. Подробнее здесь.

Победить finally может только System.exit(..)

7. Коллекции

Метод asList в java.util.Arrays значительно преобразился начиная с версии 1.5. Выражение ниже не было бы возможным без списка аргументов переменной длины, autoboxing’а и generics.

Типы для параметризованных методов могут быть указаны следующим способом:

static import’ы при всей неоднозначности могут помочь создать эффект потрясающей лаконичности.

Подробнее по ссылке.

Кстати — List.subList(int fromIndex, int toIndex) возвращает view оригинального объекта. Это документированная, однако мало распространённая возможность. Позволяет работать с подсписком, при этом изменения sub-листа будут отражены и в родительском объекте.

8. Класс URL

Значение выражения

— true

9. Инициализация final переменной

Инициализация final переменной может быть отложена

 

Дополнительные материалы по теме:

Подборка материалов и видеокурсов по Java

6 книг по Java для программистов любого уровня

10 must-have книг для Java-разработчика

Интересуетесь программированием на Java?

Подпишитесь на нашу рассылку, чтобы получать больше интересных материалов:

И не беспокойтесь, мы тоже не любим спам. Отписаться можно в любое время.




Добавить комментарий