我有这个抽象类:
public abstract class Foo{
//some attributes
public Foo(params){}
public abstract SomeInterface search(Long id);
public abstract boolean insert(SomeInterface param);
}
我有以下课程:
public class InterfaceImplementation implements SomeInterface {
//Some code here
}
然后创建一个Foo的实例:
public class Bar extends Foo{
public Foo(params){
super(params);
}
@Override
public InterfaceImplementation search(Long id){
// some code here
}
// The above code compiles
@Override
public boolean insert(InterfaceImplementation param){
// some code specific to the InterfaceImplementation here
}
// This function does not compile/
}
那么,我在做错什么,我如何才能实现自己的目标?
您的类Bar
不会覆盖insert
,因为参数类型必须完全匹配。这是因为您的实现采用InterfaceImplementation
而不是SomeInterface
。
您可以做什么来进行编译:
SomeInterface
作为参数Bar
的insert
方法,因为任何子类必须能够处理任何执行SomeInterface
,如规定Foo
。或者
在引入泛型SomeInterface
以指定参数类型应该是什么。
public abstract class Foo<T extends SomeInterface>{
和
public abstract boolean insert(T param);
然后,您可以指定T
子类中的内容:
public class Bar extends Foo<InterfaceImplementation>{
和
@Override
public boolean insert(InterfaceImplementation param){
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句