Что означает <E> в Java?

Я быстро искал Google для ответа, но не мог найти/подумать о точном параметре поиска.

Я учу себя Java, но не могу найти смысл определенного синтаксиса.

public class Node<E>{
    E elem;
    Node<E> next, previous;
}

Что означает <E>? Я смутно помню скобки стрелки, имеющие какое-то отношение к векторам, но основанные на коде выше, я чувствую, что это связано с перечислениями.

Приветствуется любая помощь или разъяснение. Спасибо.

Ответ 1

Они называются Generics.

В общем, эти типы разрешений (классы и интерфейсы) являются параметрами при определении классов, интерфейсов и методов.

Использование дженериков дает много преимуществ по сравнению с использованием не общего кода, как показано в учебнике Java:

  • Более сильные проверки типов во время компиляции. Компилятор Java применяет сильную проверку типов к универсальному коду и выдает ошибки, если код нарушает безопасность типа. Исправить ошибки времени компиляции проще, чем исправлять ошибки времени выполнения, которые трудно найти.

    Например:

    // without Generics
    List list = new ArrayList();
    list.add("hello");
    
    // With Generics
    List<Integer> list = new ArrayList<Integer>();
    list.add("hello"); // will not compile
    
  • Включение программистов для реализации общих алгоритмов.. Используя обобщения, программисты могут реализовывать общие алгоритмы, которые работают с коллекциями разных типов, могут быть настроены и безопасны для чтения и более удобны для чтения.

  • Устранение отливок.

    Например, следующий фрагмент кода без дженериков требует кастинга:

    List list = new ArrayList();
    list.add("hello");
    String s = (String) list.get(0);
    

    При повторной записи для использования дженериков код не требует кастинга:

    List<String> list = new ArrayList<String>();
    list.add("hello");
    String s = list.get(0); // no cast
    

Ответ 3

Это синтаксический способ java для указания типа Generic. По сути, это просто означает, что это может быть объект Node, который может принимать любой тип вообще.

вы должны проверить этот для хорошего тургора в java generics

Ответ 4

Здесь <E> обозначает параметр типа класса Node. Параметр type определяет, что он может ссылаться на любой тип (например, String, Integer, Employee и т.д.). Генераторы Java имеют соглашения об именах типов, например:

  • T - Тип
  • E - Element
  • K - Key

  • N - номер

  • V - Значение

Например, возьмите следующее scenerio

public class Node<E>{
   E elem;
   Node<E> next, previous;
}
class Test{
   Node<String> obj = new Node<>();
}

Для вышеупомянутого scenerio в фоновом режиме класс Node будет ссылаться на тип String, и класс будет выглядеть следующим образом

public class Node<String>{
   String elem;
   Node<String> next,previous;
}

Не только String вы также можете использовать Integer, Character, Employee и т.д. как параметр типа.

Вы также можете использовать generics с интерфейсом, методом и конструктором.

Подробнее о дженериках читайте здесь:

https://www.journaldev.com/1663/java-generics-example-method-class-interface https://www.javatpoint.com/generics-in-java