Co szukam:rodzajowych Java egzekwowania tego samego typu na klucze i wartości mapie
szukam skonstruować coś, co wymusza wpisać na oba klucze i wartości mapie: trochę jak Map<Key<X>, Value<X>>
. Jednak chciałbym dodatkowo wymusić, aby typy pasowały do w obrębie każdego wpisu klucz/wartość w numerze, ale pomiędzy wpisami, żaden typ nie powinien być egzekwowany.
Na przykład, w ramach tej samej mapie, te pary klucz/wartość należy uznać za ważne:
Key<Integer>
mapy doValue<Integer>
Key<String>
map doValue<String>
Key<Double>
map doValue<Double>
Jednak coś takiego będzie nieprawidłowe:
Key<Integer>
mapowanie doValue<String>
Key<Double>
mapowanie doValue<Boolean>
Jak mogę to osiągnąć używając rodzajowych Java?
Co ja nie szukam:
Rozumiem, że mogę zaimplementować coś jak
Set<Pair>
, gdzie para akceptuje klucz/wartość tego samego typu. Jednak sprawdzanie tego za pomocą klawisza nie będzie już stałą operacją czasu.Rozumiem, że mogłem zrobić coś takiego jak
Map<Key<?>, Value<?>>
i po prostu potwierdzić, że klucz i wartość są tego samego typu w środowisku wykonawczym. Jednak zastanawiałem się, czy jest to możliwe wyłącznie przy użyciu leków generycznych.
Czy nie masz tej mapy w klasie ogólnej? –
Niekoniecznie. Po prostu chce utworzyć "Mapę" gdziekolwiek, co wymusza "Klawisze muszą być tego samego typu co wartości (lub mają ten sam rodzaj w nich, w przypadku' Klucza '/' Wartość '), ale każda para klucz/wartość może być innego typu. " –