适合时间的问候:)
在Java中工作,我有一个接口A.此接口的所有实现者也扩展了类B,但是B没有实现A.在我们使用A的实例(引用为A)的类中,它被转换为a B引用,以便我们可以使用B类中定义的方法。从概念上讲,Method也应该属于接口A.
你能想到一个不将方法引入接口A的原因,这样我们就不必将它转换为B吗?我是否可以覆盖子类中的Method并只调用超级版本,以便在IDE等中更容易导航?
答案 0 :(得分:4)
在我们使用A实例(引用为A)的类中,它被转换为B引用,以便我们可以使用在类B中定义的方法。
所以我假设你有这个场景
locationListener
如果这是真的,这可以吗?
public void doStuff(A aType){
...
B bType = (B) aType;
...
}
我创建了以下内容来测试它。
private <T extends B & A> void example(T type){
type.aStuff();
type.doBStuff();
}
给我
A stuff B stuff
答案 1 :(得分:0)
为什么不创建一个扩展B并实现A的抽象类?假设这个类被称为C,你的其他类将扩展C并实现A所需的方法,但是会为你提供B中可用的方法而不进行强制转换。
我认为移动方法现在不是一个好主意,也许,最多可以让B实现A(假设你没有其他类,你还没有谈到哪些类依赖于类和接口你所提到的)。