Как стать автором
Обновить

Разбираем JSR-334: примеры кода

Время на прочтение2 мин
Количество просмотров2.9K
JSR-334 посвящен небольшим улучшениям языка Java, которые реализованы в JDK 7

  • В числовых литералах группы цифр теперь можно разделить подчеркиванием:
    public final static int INT_WITH_UNDERSCORES = 100_000;
  • Добавлены бинарные литералы с префиксом 0b:
    public final static int BINARY_INT = 0b001100;
  • В качестве ключа switch теперь можно применять тип String:
    switch("one") {
      case "one" :
      case "two" : System.out.println("JSR 334");
    }
  • Теперь можно не повторять определение типа при создании объекта generic класса:
    List<String> foo = new ArrayList<>();
  • В блоке catch можно перечислить несколько классов исключений:
    try {
      throw new NullPointerException();
    } catch (ArithmeticException | NullPointerException e) {
    }
  • UPD Для целей проверки синтаксиса используется наименьший общий тип перечисленных исключений:
    try {
      throw new NullPointerException();
    } catch (NullPointerException | ArithmeticException e) {
      // Будет ошибка компиляции
      // ArithmeticException a = e;
      // Общий тип
      RuntimeException r = e;
    }
  • Добавлены автоматически закрывающиеся после выполнения блока try ресурсы, которые должны реализовывать интерфейс java.lang.AutoCloseable:
    class Resource implements AutoCloseable {
    @Override
    public void close() throws Exception {}
    }
  • Конструкция try с автоматически закрывающимся ресурсом может быть без catch и finally:
    try (Resource resource = new Resource()) {
      throw new Exception();
    }
  • В методах и конструкторах, использующих переменное число аргументов переменного типа теперь будет выдаваться предупреждение unchecked or unsafe operation, если они не аннотированы SafeVarargs. Аннотировать можно конструкторы, final и static методы:
    class Coin<T> {
    @SafeVarargs
    public Coin(T ... args){
    }
    @SafeVarargs
    public final void instanceMethod(T ... args){
    }
    @SafeVarargs
    public static void staticMethod(K ... args){
    }
    }
Теги:
Хабы:
Всего голосов 49: ↑45 и ↓4+41
Комментарии35

Публикации

Истории

Работа

Java разработчик
443 вакансии

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань