Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Java 9: Diamond Operator (<>) для анонимных внутренних классов

Diamond operator (<>) появился в Java 7 для сокращения generic-конструкторов, но не работал с анонимными классами. Java 9 устранила это ограничение.

До Java 9 (verbose)

Handler<Integer> intHandler = new Handler<Integer>(1) { ... };
Handler<? extends Number> intHandler1 = new Handler<Number>(2) { ... };
Handler<?> handler = new Handler<Object>("test") { ... };

Java 9+: с diamond operator

Handler<Integer> intHandler = new Handler<>(1) { ... };
Handler<? extends Number> intHandler1 = new Handler<>(2) { ... };
Handler<?> handler = new Handler<>("test") { ... };

Тип выводится из левой части присваивания. Код становится чище и читаемее.

Полный пример

public class Tester {
    public static void main(String[] args) {
        Handler<Integer> intHandler = new Handler<>(1) {
            @Override public void handle() { System.out.println(content); }
        }; intHandler.handle();

        Handler<? extends Number> intHandler1 = new Handler<>(2) {
            @Override public void handle() { System.out.println(content); }
        }; intHandler1.handle();

        Handler<?> handler = new Handler<>("test") {
            @Override public void handle() { System.out.println(content); }
        }; handler.handle();
    }
}
abstract class Handler<T> {
    public T content;
    public Handler(T content) { this.content = content; }
    abstract void handle();
}

Вывод

1
2
Test

java

  1. Ключевое слово final в Java: переменные, методы и классы
  2. Оператор instanceof в Java: полное руководство с примерами
  3. Вложенные и внутренние классы в Java: типы, примеры и лучшие практики
  4. Статические вложенные классы в Java: использование, отличия и примеры
  5. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  6. Паттерн Singleton в Java: как реализовать и безопасно использовать
  7. Рефлексия в Java: инспекция классов, методов и полей во время выполнения
  8. Освоение Java ObjectOutputStream: сериализация, методы и практические примеры
  9. Освоение Java Generics: создание переиспользуемого, типобезопасного кода
  10. Мастерство файловых операций в Java с java.io: создание, чтение, запись и удаление