Wiem to od Java 7, powtarzając typ aklasa ogólna w konstruktorze podczas tworzenia instancji jest redundancją. Ale co z operatorem diamentów <>, czy można go powtórzyć? Innymi słowy, chciałbym wiedzieć, jaka jest różnica między tym:
List<String> Fruits = new ArrayList<>();
i to
List<String> Fruits = new ArrayList();
albo to
Map<Integer, String> students = new HashMap<>();
i to
Map<Integer, String> students = new HashMap();
Z góry dziękuję
Odpowiedzi:
7 dla odpowiedzi № 1Tak, jest różnica. Operator diamentu jest tylko skrótem do określania całego rodzaju ogólnego, ponieważ można go wywnioskować. Są one równoważne:
List<String> Fruits = new ArrayList<>();
i
List<String> Fruits = new ArrayList<String>();
Jednak bez żadnych wsporników kątowychoznacza, że używasz typu surowego, który różni się od używania typów generycznych w klasie. Generuje to niesprawdzone ostrzeżenie o przypisaniu i należy tego unikać.
List<String> Fruits = new ArrayList(); // warning!