在Java中重写抽象泛型函数的对象上使用方法
下面是下面的代码在Java中重写抽象泛型函数的对象上使用方法,java,oop,generics,Java,Oop,Generics,下面是下面的代码 public abstract class A { public abstract <E> void foo(E e); } 我得到的错误是: error: cannot find symbol ... symbol: method someOtherClassMethod() location: variable oc of type OtherClass where OtherClass is a type-variable: O
public abstract class A {
public abstract <E> void foo(E e);
}
我得到的错误是:
error: cannot find symbol
...
symbol: method someOtherClassMethod()
location: variable oc of type OtherClass
where OtherClass is a type-variable:
OtherClass extends Object declared in method <OtherClass>write(OtherClass )
1 error
错误:找不到符号
...
符号:方法someOtherClassMethod()
位置:OtherClass类型的变量oc
其中OtherClass是类型变量:
OtherClass扩展方法写入中声明的对象(OtherClass)
1错误
为什么我不能使用someOtherClassMethod()?没有泛型,一切都可以工作,但我希望能够扩展覆盖foo()方法的其他类
解决方案:
public abstract class A <E> {
public abstract void foo(E e);
}
公共抽象类A{
公开摘要无效foo(E);
}
子类:
public class B extends A<OtherClass> {
@Override
public void foo(OtherClass oc) {
oc.someOtherClassMethod();
}
}
公共类B扩展了{
@凌驾
公共无效foo(其他类别oc){
oc.someOtherClassMethod();
}
}
但是,现在我需要在主功能中使用:
A<OtherClass> a = new B();
A A=新B();
试试看
公共抽象类A{
公开摘要无效foo(E);
}
及
公共类B扩展了
因为otherClass
是一个泛型参数,所以可以是任何东西。Show otherClass.java文件是否有方法someotherclassmethod注意,按照惯例,java类型和类型参数以大写字母开头。i、 e.OtherClass
,而不是OtherClass
。是的,它有一些otherclassmethod,没有泛型,一切正常@Oliver,所以有可能使它与泛型参数一起工作?在这里使用泛型要解决什么问题?如果不理解这一点,就很难提出有意义的解决方案。
public class B extends A<OtherClass> {
@Override
public void foo(OtherClass oc) {
oc.someOtherClassMethod();
}
}
A<OtherClass> a = new B();
public abstract class A<E> {
public abstract void foo(E e);
}
public class B extends A<OtherClass>