我在寻找什么:
我正在寻找一种可以在地图的键和值上强制类型的东西:有点像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>
,其中对接受相同类型的键/值。但是,按键查找将不再是固定时间的操作。
我知道我可以做类似的事情Map<Key<?>, Value<?>>
,只是断言在运行时Key和Value是相同的类型。但是,我想知道是否可以严格使用泛型。
您可以执行此操作,但必须在上滚动自己的包装器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
}
}
比较例如番石榴的ClassToInstanceMap
。
问题内容: 我对此进行了扩展,应该可以帮助我在上下文之间传输对象: 现在它返回的对象,我应该将其强制转换为我想要的类,如下所示: 有没有办法避免这种无用的转换,如果我从类的对象调用使其返回类型? 问题答案: 更新: 有关更好的解决方案 与如何在NSManagedObjectSwift扩展中如何创建托管对象子类的实例中类似,这可以使用通用的辅助方法来完成: 请注意,我已将返回类型更改为。 并 没有
我在Kotlin中有一个方法,它返回一个泛型列表的Rx可观察值: 因为Kotlin list特征定义为,Java将看到返回类型为。 是否有一种方法告诉Kotlin编译器,Java应该将其视为?
背景:对于我的用户,我需要存储一对相同的对象类型(设置),目前我有它像 我正在创建带有设置的KeyValueTypes,并将其添加到列表中(每个用户都有一个列表)。我的设置有一个值字段(它显示了它们是否比其他设置“更重要”),所以我希望基于该字段添加它们,稍后我还需要基于该字段(可能还需要基于名称字段)进行搜索--所以搜索将不得不在列表中查找,然后在KeyValueTypes中查找 问题:什么是最
问题内容: 我不明白为什么在尝试执行以下操作时会收到警告(未经检查的演员表): 我的意思是将castedMap发布到外部代码的危险是什么?两种操作均可在运行时完美运行: 使用SomeType类型的键从castedMap获取元素 使用SomeType类型的键将元素放入castedMap中。 我只是使用@SuppressWarnings(“ unchecked”)取消警告。 问题答案: 答案可能很无聊
考虑一个具有的API,如下所示: 很简单,只有页面大小和跳过计数属性。 此外,现在我还有一些类,它们也包含但未分页。 在我的测试中,我希望他们都能实现一个接口,这样我就可以用一些更基本的测试来生成一个通用的基本测试类。为此,我添加了我认为会起作用的内容: 我将PagedResults更改为: 错误 但现在编译器抱怨PagedResultBase继承的所有地方的使用情况(?)从。 但是,如果我将接口
我读了很多文章,但我不明白这两行之间的区别: 我看到的唯一区别是第一行触发了“未检查的分配”警告。