Looking for java Answers? Try Ask4KnowledgeBase
Looking for java Keywords? Try Ask4Keywords

Java LanguageДженерики


Вступление

Generics - это средство общего программирования, которое расширяет систему типов Java, чтобы позволить типу или методу работать на объектах разных типов, обеспечивая при этом безопасность типа времени компиляции. В частности, среда коллекций Java поддерживает дженерики, чтобы указать тип объектов, хранящихся в экземпляре коллекции.

Синтаксис

  • class ArrayList <E> {} // общий класс с параметром типа E
  • класс HashMap <K, V> {} // общий класс с двумя параметрами типа K и V
  • <E> void print (элемент E) {} // общий метод с параметром типа E
  • ArrayList <String> имена; // объявление общего класса
  • ArrayList <?> Объекты; // объявление общего класса с неизвестным параметром типа
  • new ArrayList <String> () // создание экземпляра универсального класса
  • new ArrayList <> () // экземпляр с типом вывода "diamond" (Java 7 или новее)

замечания

Генерики реализуются в Java через стирание типа, что означает, что во время выполнения информация типа, указанная в создании экземпляра универсального класса, недоступна. Например, оператор List<String> names = new ArrayList<>(); создает объект списка, из которого тип элемента String не может быть восстановлен во время выполнения. Однако, если список хранится в поле типа List<String> или передается параметру method / constructor этого же типа или возвращается из метода этого типа возврата, то полная информация о типе может быть восстановлена ​​во время выполнения через API Java Reflection.

Это также означает, что при выдаче родовому типу (например: (List<String>) list ), литой является непроверенный бросок . Поскольку параметр <String> стирается, JVM не может проверить правильность приведения из List<?> List<String> ; JVM видит только показ List для List во время выполнения.

Дженерики Связанные примеры