java英雄相互攻击接口实现_java-如何实现矛盾的接口

这个问题已经在这里有了答案:            >            Java – Method name collision in interface implementation                                    7个

不久我遇到了一个奇怪的地方,我无法向自己解释.现实世界中的问题已经解决,我只是好奇是否找到了令人满意的答案.

想象一下,您必须编写一个类,该类从您正在使用的某些框架中实现以下接口:

interface Interface1 {

String method();

}

到现在为止还挺好.现在介绍第二个框架,如果您的类将实现第二个接口,它将非常有用:

interface Interface2 {

Long method();

}

这就是出现问题的地方:

class ThatsTheProblem implements Interface1, Interface2 {

public ???? method() {

// ...

}

}

有任何想法吗?

仅供参考:实际问题基于抽象的dao模式,其中某些实体具有Long id,其他实体具有UUID id.

解决方法:

简短的答案:您不能.

您可以做的是提供一个实现一个或另一个接口的视图.例如:

public class OnePossibleSolution { // no "implements"

private String interface1Method() {

return "whatever";

}

public Interface1 asInterface1() {

return new Interface1() {

@Override

String method() {

return interface1Method();

}

}

}

// ditto for Interface2...

这可能是解决问题的最惯用的Java方法.例如,当您要迭代其元素时,这就是Map所做的.与其尝试解决成为可迭代的K的问题,不如解决可迭代的V的问题.和Iterable< Map.Entry< K,V>&gt ;,它提供了三个视图:

> keySet()

> values()

> entrySet()

这些中的每一个返回各自的集合,该集合实现适当的Iterable….接口.

标签:interface,java

来源: https://codeday.me/bug/20191029/1959751.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值