Jon*_*uis 17 java generics map
我在找什么:
我正在构建一些在地图的键和值上强制执行类型的东西:有点像Map<Key<X>, Value<X>>.但是,我还想在每个键/值条目中强制执行类型匹配,但在条目之间,不应强制执行任何类型.
例如,在同一个映射中,这些键/值对应被视为有效:
Key<Integer> 映射到 Value<Integer>Key<String> 映射到 Value<String>Key<Double> 映射到 Value<Double>但是,这样的事情将是无效的:
Key<Integer> 映射到 Value<String>Key<Double> 映射到 Value<Boolean>如何使用Java泛型完成此操作?
我不想要的:
我知道我可以实现类似的东西Set<Pair>,其中pair接受相同类型的Key/Value.但是,按键查看这个不再是一个恒定的时间操作.
我知道我可以做类似的事情,Map<Key<?>, Value<?>>
并断言Key和Value在运行时是相同的类型.但是,我想知道这是否可以严格使用泛型.
Lou*_*man 22
你可以这样做,但你必须在自己的上面滚动自己的包装Map:
class MyTypeSafeMap {
private Map<Key<?>, Value<?>> map;
public <T> void put(Key<T> key, Value<T> value) {
map.put(key, value);
}
public <T> Value<T> get(Key<T> key) {
return (Value) map.get(key);
// we know it's safe, but the compiler can't prove it
}
}
Run Code Online (Sandbox Code Playgroud)
比较例如番石榴ClassToInstanceMap.
| 归档时间: |
|
| 查看次数: |
3745 次 |
| 最近记录: |