dot*_*p0T 3 java collections instanceof
我有一个MyInterface具有众多实现和集合的接口Collection<MyInterface>.
现在怎么样,我可以保证的是有没有 2种元素在这集是同一类型的?
而如何我可以阻止任何进入从被覆盖?
意味着在任何给定的时间点只有集合中每个实现的1个实例.
出于显而易见的原因,我无法equals(Object obj)在界面中添加默认实现.我也不能以任何方式保证每个实现都会覆盖该equals(Object obj)方法(显而易见但是为了彻底性而在这里).
我目前看到的唯一方法是创建一个抽象类MyAbstractClass.但这似乎有点矫枉过正(?)
你可以使用a Map<Class<?>,MyInterface>而不是a Collection<MyInterface>.关键是实施Class.这将确保每种类型的最多一个实例可以添加到Map.
以下是如何初始化地图并向其添加条目而不覆盖现有条目:
Map<Class<?>,MyInterface> map = new HashMap<>();
...
if (!map.containsKey(obj.getClass())) {
map.put(obj.getClass(),obj);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |