Dwie napisane przez ciebie instrukcje konstruują obiekt LinkedList<String>
w celu przechowywania listy łańcuchów, a następnie przypisania do zmiennej. Różnica polega na rodzaju zmiennej.
Przypisując LinkedList<String>
do zmiennej typu Queue<String>
, można uzyskać dostęp tylko do metod w LinkedList
, które są dostępne w interfejsie Queue<String>
, która obejmuje wsparcie dla enqueuing i zdejmującą z kolejki elementy. Byłoby to przydatne, gdybyś musiał napisać program, który używał kolejki do różnych operacji i chciał zaimplementować tę kolejkę za pomocą połączonej listy.
Przypisując LinkedList<String>
do zmiennej typu List<String>
, można uzyskać dostęp tylko do metod w LinkedList
, które są dostępne w interfejsie List<String>
, które są normalne operacje utrzymania sekwencję elementów. Byłoby to użyteczne, na przykład, gdybyś potrzebował przetworzyć listę elementów, które mogłyby rosnąć i skurczyć się w dowolnym miejscu.
W skrócie, dwie linie tworzą ten sam obiekt, ale zamierzają z nich korzystać na różne sposoby. Mówi się, że potrzebuje kolejki wspieranej przez listę połączoną, podczas gdy druga mówi, że potrzebuje ogólnej sekwencji elementów popartych przez listę połączoną.
Mam nadzieję, że to pomoże!
@ BheshGurung- Jesteś pewien?Jestem prawie pewien, że oba te są legalne kodu Java. – templatetypedef
Nie kompilują się, ponieważ brakuje im(), a nie dlatego, że zadanie byłoby nielegalne :) – Affe
ok() zostało poprawione –