我有一个变体样式对象foo
,它可以表现为java.util.Map
和java.util.List
以及其他普通旧数据类型。这个对象是用C ++编写的(以复合模式为模型),我正在构建一个JNI,以便我可以在Java中使用它。
在Java中,我有动力写
public class foo implements
Streamable,
java.util.Map<String, foo>,
java.util.List<foo>
然后我遇到了麻烦。例如,我需要实现3种remove
:
public foo remove(int index)
public boolean remove(Object key)
public foo remove(Object key)
前两个用于java.util.list
,最后一个用于java.util.map
。当然,这是一个问题,因为您不能拥有两个具有相同名称和参数但不同返回类型的函数。
有没有办法解决这个问题?
答案 0 :(得分:0)
您可以使用LinkedHashMap。
Map接口的哈希表和链表实现,具有可预测的迭代顺序。此实现与HashMap的不同之处在于它维护了一个贯穿其所有条目的双向链表。
请参阅this question,因为它讨论了您遇到的同样问题。
答案 1 :(得分:0)
适配器可以工作。有一个类实现Map
和Stream
,另一个类实现List
和Stream
。这些适配器各自接口所需的所有操作都将从公共底层foo实例中提取。