这是我的代码。我有一个基本接口来定义通用功能。用泛型实现接口,两种方法都有相同的擦除
interface BaseInterface<T> {
void baseFunc(T param)
}
interface MyInterface1 extends BaseInterface<MyEntity1> {
void func1()
}
interface MyInterface2 extends BaseInterface<MyEntity2> {
void func2()
}
而且我的课是:
abstract class BaseClass implements BaseInterface<T> {
// ...some common things
}
class ClassA extends BaseClass implements MyInterface1 {
@Override
public void func1() {...}
@Override
public void baseFunc(MyEntity1 param) {...}
}
class ClassB extends BaseClass implements MyInterface2 {
@Override
public void func2() {...}
@Override
public void baseFunc(MyEntity2 param) {...}
}
不同课做做不同的豆MyEntity1和MyEntity2同样的事情。所以我用generic T定义了baseFunc()。
但是这里有个问题。 “这两种方法都有相同的擦除,但都不会覆盖其他baseFunc(T)和baseFunc(MyEntity1)...”
如何解决此问题?
顺便说一下,当我删除泛型并将baseFunc移动到MyInterface1和MyInterface2时,它工作正常。但我认为这不是最好的方法。
'抽象类BaseClass实现BaseInterface'出错了。什么是'T'? –
shmosel
对,我检查了我的代码,发现了这个。抽象类BaseClass的实现BaseInterface改变抽象类BaseClass的实现BaseInterface 类ClassA的扩展BaseClass的类ClassB的扩展BaseClass的 –
@OscarZhang对不起,我输入我的回答之前,我注意到你的评论。这对你有用吗?如果是这样,你可以将你的评论转换为答案,在这种情况下,我会删除我的;因为你的评论和我的回答基本上是一样的。 –