<?>
jest skrótem <? extends Object>
. Możesz przeczytać poniżej link udostępniony, aby uzyskać więcej informacji.
<?>
"?"
oznacza dowolny nieznanego typu, może reprezentować dowolny typ co w kodzie dla. Użyj tego symbolu wieloznacznego, jeśli nie masz pewności co do typu.
ArrayList<?> unknownList = new ArrayList<Number>(); //can accept of type Number
unknownList = new ArrayList<Float>(); //Float is of type Number
Uwaga:<?>
oznacza anythings. Więc może zaakceptować typ, który nie jest dziedziczony z klasy Object
.
<? extends Object>
<? extends Object>
oznacza, że można przekazać obiekt lub podklasę, która rozciąga Object
klasę.
ArrayList<? extends Number> numberList = new ArrayList<Number>(); //Number of subclass
numberList = new ArrayList<Integer>(); //Integer extends Number
numberList = new ArrayList<Float>(); // Float extends Number
t - stosuje się do określenia typu
E - służy do określenia elementowi
k - klucze
V - Wartości
N - numery
Ref:
To to samo. Zobacz http://stackoverflow.com/questions/2274720/java-extends-object-question – Dan
@Dan Jeśli przeszukasz "? Extends Object" w tym pytaniu, nic nie znajdziesz. Czytam odpowiedzi, żeby zobaczyć, czy mogę coś wywnioskować, ale nie sądzę, że to jest to. W szczególności nie chodzi tu o generyczne leki. – orbfish
@Dan - To inne pytanie. Widziałem to już wcześniej i pamiętam przynajmniej wzmiankę o subtelnej różnicy. Pozwól mi zobaczyć, czy mogę go znaleźć .. –