2013-05-05 11 views
9

Jaka jest różnica między Class<?> i Class<Object> w Javie? AFAIK Java Erasure zmienia <?> na jego górną granicę, która w takim przypadku byłaby w każdym razie Object. Więc po co to jest?Różnica między klasą <?> a klasą <Object> w języku Java

+2

Intuicyjnie czuje się źle mają 'Class ' być coś innego niż ' Object.class'. Głównie dlatego, że przypomina mi wiele, wiele pytań, które są w formie "Chcę przypisać" List 'do' Listy 'ale Java mi nie pozwoli." Pisząc kod, nie powinieneś się przede wszystkim przejmować tym, do czego zostaną usunięte generics - cały punkt generycznych jest po to, aby kompilator wykonał pewne sprawdzenia * zanim * zostaną usunięte. – millimoose

+0

możliwy duplikat [Jaka jest różnica między? i obiekt w generycznych Java?] (http://stackoverflow.com/questions/678822/what-is-the-difference-between-and-object-in-java-generics). Zobacz także [Java: Inna między listami, lista , lista , lista i lista ] (http://stackoverflow.com/questions/6231973/java-different-between-list-list-list-liste-and -listobject) –

+0

Myślę, że ten http://docs.oracle.com/javase/tutorial/java/generics/unboundedWildcards.html wyjaśnia to całkiem dobrze, jeśli dobrze zrozumiałem pytanie. – arynaq

Odpowiedz

6

różnicą jest to, że Collection<String> nie jest podtypem Collection<Object>, Collection<?> jest użyteczny w miejscu jako argument gdzie każdy zbiór można umieścić

+1

Klasa zdecydowanie nie jest super typem wszystkich kolekcji. Po pierwsze, "Class" nie ma nic wspólnego z kolekcjami. Nawet jeśli masz na myśli super typ wszystkich "Klasy", wciąż jest źle. Czy masz dodatkowe informacje na temat symboli wieloznacznych w generycznych. –

+0

Naprawiono błąd, lepiej zdejmij z tego głosuj – aaronman

+2

Co jest nie tak z tym – aaronman

Powiązane problemy