Java Autoboxing позволяет создавать карты на Long, Integer, Double
, а затем управлять ими с использованием примитивных значений. Например:
java.util.HashMap<String, Integer> map = new java.util.HashMap<String, Integer>();
map.put("one", 1); // 1 is an integer, not an instance of Integer
Если вы хотите хранить в одной карте различных примитивных типов, вы можете его сделать Map<String, Number>
. Позволяет хранить значения BigDecimal
, BigInteger
, Byte
, Double
, Float
, Integer
, Long
, Short
(и AtomicLong
, AtomicInteger
).
Вот пример:
Map<String, Number> map = new HashMap<String, Number>();
map.put("one", 1);
map.put("two", 2.0);
map.put("three", 1L);
for(String k:map.keySet()) {
Number v = map.get(k);
System.err.println(v + " is instance of " + v.getClass().getName() + ": " + v);
}
Это была моя ошибка за то, что она неясна. Я говорю, что хочу ограничить значение как примитивный тип. Я хочу, чтобы я разрешил использовать любой из примитивных типов в качестве значения в этой конкретной карте. – Prospero 2010-12-09 15:23:40