如何实现2个不兼容的Java接口(不需要的可选方法)

时间:2017-05-26 06:06:06

标签: java collections interface override signature

我正在尝试创建一个实现Map<String,List<String>>List<String>的类但由于有一个方法具有不兼容的函数签名而被阻止:

from List<E>
    boolean remove(Object o)

from Map<K,V>
    V remove(Object o)

严格来说这个函数根据API是可选的,因为我打算我的类是不可变的,所以它是一个我不想支持的函数(我只会返回一个UnsupportedOperationException)。问题是签名只是键控函数名和参数签名,而不是返回类型,我很难找到一种强制编译器的方法。我希望问题是返回内存区域对于一个原语和一个对象有不同的大小,所以没有办法将两者混合在一起,当我甚至不想要这个方法时,这是双倍的悲伤!不想支持可选方法,这与我见过的有关类似问题的Collection类的合并版本的其他问题有什么不同

我听说过传言Java 1.8有更多的选择,但我现在正在使用Java 1.6(目标平台有点像传统安装,迁移将是一个温和的烦恼)。有没有办法躲避这个?

background:该类旨在作为已解析配置文件的封装,这些配置文件既可作为可迭代列表(按读入顺序排列的行),也可作为每个配置令牌返回已过滤的有序List值的解析配置文件。还有其他方法可以做到这一点,但与Map和List的兼容性会更加优雅,因为这是一个库函数

0 个答案:

没有答案