Co oznacza Map<?, ?>
w języku Java?
Sprawdziłem w Internecie, ale nie mogę znaleźć żadnych artykułów na ten temat.Co oznacza mapa <?, ?> w języku Java?
edit: Znalazłem to na MP3 Duration Java
Co oznacza Map<?, ?>
w języku Java?
Sprawdziłem w Internecie, ale nie mogę znaleźć żadnych artykułów na ten temat.Co oznacza mapa <?, ?> w języku Java?
edit: Znalazłem to na MP3 Duration Java
?
wskazuje zastępczy w której wartość nie jesteś zainteresowany (zamiennika):
HashMap<?, ?> foo = new HashMap<Integer, String>();
A ponieważ ?
jest wieloznaczny, można pominąć go i nadal uzyskać ten sam wynik:
HashMap foo = new HashMap<Integer, String>();
Ale mogą być używane do określenia lub podziału generycznych, które będą używane. W tym przykładzie pierwszy rodzajowy musi implementować interfejs Serializable.
// would fail because HttpServletRequest does not implement Serializable
HashMap<? extends Serializable, ?> foo = new HashMap<HttpServletRequest, String>();
Zawsze lepiej jest używać konkretnych klas zamiast tych symboli wieloznacznych. Powinieneś używać tylko ?
, jeśli wiesz co robisz :)
Typ Raw NIE jest tym samym wynikiem co symbol wieloznaczny! Ani trochę! – Affe
Och, naprawdę? Tego nie wiedziałem. Jak te dwa pierwsze przypadki różnią się od siebie? – mana
Dzika karta oznacza "To jest mapa, która ma w sobie pewien specyficzny rodzaj ograniczonej rzeczy, ale nie wiem, co to jest". Surowy typ jest typem surowym, nic o nim nie wiadomo, żadnych ograniczeń, może tam być cokolwiek. Kompilator nie pozwoli ci dodawać rzeczy do mapy ,?>, ale możesz umieścić wszystko, co chcesz w surowej Mapie. – Affe
Map<?,?>
oznacza, że w czasie kompilacji, nie wiem, co typ klasy klucz i wartość przedmiotu mapą będzie.
Jest to typ wieloznaczny. http://download.oracle.com/javase/tutorial/extra/generics/wildcards.html
Przepraszam, nie jestem tak dobry w generycznych, ale jakie są różnice między 'Mapą ,?>' i 'Mapą
'ClassName
znalazłem ten artykuł, który explains wildcard parametrization of generics
+1 dla linku – powerMicha
Dokumentacja Angeliki to miejsce, w którym wszyscy kończą, próbując opracować generykę. – SteveD
Od java5, Leki generyczne są dostarczane z językiem. http://download.oracle.com/javase/tutorial/java/generics/index.html
Zapis oznacza, że tworzona mapa zaakceptuje obiekt klasy A jako klucz i obiekt klasy B jako wartość.
Pomoże Ci to jako programista, więc nie będziesz już rzucał obiektu do właściwej klasy. Więc przyzwyczajenie być w stanie korzystać z mapy z klawiszy innych niż A i objets innych niż B. Unikanie brzydkie odlewane i świadczących skompilować ograniczenia czasowe
Map<?,?>
mówi, że można wykorzystać każdy obiekt na key
i value
na mapie.
Ale zwykle jest bardziej przydatny do wykorzystania rodzajowych tak:
Map<String, YourCustomObject> map
Więc w tej mapie, można tylko put
String
jako klucz i YourCustomObject
jako wartość ty.
Zobacz ten tutorial na temat leków generycznych.
? jest symbolem wieloznacznym. Słońce ... er ... Oracle ma ładny tutorial na temat generycznych here. Istnieje osobna sekcja na symbole wieloznaczne.
Prawdopodobnie dostaniesz lepszą odpowiedź, jeśli umieścisz więcej kontekstu na swoim pytaniu, na przykład gdzie zobaczyłeś Map<?, ?>
.
'Mapa' jak w _kolejce_? lub ', ?>' część, jak w _generics_? Czy spojrzałeś na javadoc? – c00kiemon5ter
W porządku, ja na pewno mówię o generycznych i wieloznacznych znakach. Część "<" była ukryta w pytaniu; interpretowane jako html. Zmontowałem to pytanie. – c00kiemon5ter
@ C00k - możesz chcieć ponownie edytować pytanie, ', ?>' nie wyświetla się. – Paul