Два написанных вами утверждения построят объект LinkedList<String>
, чтобы сохранить список строк, а затем назначить его переменной. Разница заключается в типе переменной.
Назначив LinkedList<String>
переменного типа Queue<String>
, вы можете получить доступ только методов в LinkedList
, которые доступны в интерфейсе Queue<String>
, который включает в себя поддержку enqueuing и извлечение из элементов. Это было бы полезно, если бы вам нужно было написать программу, которая использовала очередь для различных операций, и захотела реализовать эту очередь, используя связанный список.
Назначив LinkedList<String>
переменного типа List<String>
, вы можете получить доступ только методы в LinkedList
, которые доступны в интерфейсе List<String>
, которые являются обычными операциями для поддержания последовательности элементов. Это было бы полезно, например, если вам нужно было обработать список элементов, которые могли бы расти и сокращаться где угодно.
Короче говоря, две линии создают один и тот же объект, но намерены использовать их по-разному. Один говорит, что ему нужна очередь, поддерживаемая связанным списком, в то время как другая говорит, что ей нужна общая последовательность элементов, поддерживаемых связанным списком.
Надеюсь, это поможет!
@ BheshGurung - Вы уверены?Я уверен, что оба из них - это законный Java-код. – templatetypedef
Они не компилируются, потому что им не хватает(), а не потому, что назначение было бы незаконным :) – Affe
ok() был исправлен –