Po próbie zrozumienia pojęć pod numerem Spring MVC natknąłem się na wyrażenie Collection<? extends Book>
, którego nigdy wcześniej nie widziałem. Próbowałem go rozwiązać samodzielnie, ale nie widzę różnicy między używaniem Collection<? extends Book>
i Collection<Book>
. Zgadywałem, że dopuszcza to tylko rozszerzenia Książki, ale także pozwala na Księgę. Zarysuj to. Próbowałem używać Google, ale od kiedy? jest symbolem wieloznacznym w google, dzięki czemu wyszukiwanie jest prawie niemożliwe. Mam szukane stackoverflow dla odpowiedzi, ale wszystkie pytania na ten temat (takie jak List<? extends MyType> i <? extends > Java syntax) już zakładają znajomość Collection<? extends T>
. Oto kod, który początkowo intryguje moje zainteresowanie:Kolekcja <? extends T> vs Kolekcja <T>
import java.util.ArrayList;
import java.util.Collection;
public class Book {
public static void main(String[] args) {
BookCase bookCase1 = new BookCase();
BookCase bookCase2 = new BookCase(bookCase1);
}
}
class BookCase extends ArrayList<Book> {
public BookCase() {
}
//acts same as public BookCase(Collection<Book> c) {
public BookCase(Collection<? extends Book> c) {
super(c);
}
}
Co <? extends T>
zrobić? Czym się różni od <T>
?
EDIT:
Followup pytanie: Czy BookCase extends ArrayList<Book>
oznacza, że BookCase
rozciąga Book
?
"Kolekcja" to "Kolekcja"? rozszerza Book> 'ale nie' Collection '. –
immibis
Takie czasy, żałuję, że nie mogę zaznaczyć zielonymi znacznikami wielu odpowiedzi. W szczególności odpowiedzi Makoto i Adama. Chociaż wszystkie odpowiedzi były pomocne, w szczególności pomogły mi to zrozumieć. Jeśli więc szukasz odpowiedzi na to pytanie, sugeruję, abyś przeczytał oba, przynajmniej w tym komentarze. Dziękuję wszystkim!! – Evorlor