我正在使用boofCV,我在某个时候发现了一个被删除的课程:
public class WrapDetectDescribeSurf
<T extends ImageSingleBand, II extends ImageSingleBand>
implements DetectDescribePoint<T,SurfFeature>
{...}
我发现ImageSingleBand
是一个抽象类,至少有3个抽象方法:
protected abstract Object _getData();
public abstract ImageTypeInfo<T> getTypeInfo();
protected abstract void _setData(Object data);
据我所知,要创建一个抽象的子类,你应该实现基类的抽象方法。我在上面的代码中找不到这些方法的任何实现。我无法理解这个实施可以放在哪里。我的意思是T
和II
都是在原始类WrapDetectDescribeSurf
的参数化中定义的。
那么这里发生了什么?您不需要实现抽象方法吗?我在这里问了一个类似的问题:Method return type contains subclass definition但我并没有完全解决我的无知。
答案 0 :(得分:1)
ImageSingleBand的实现必须实现抽象方法。
泛型声明T和II只是声明,它告诉编译器,T和II是扩展 ImageSingleBand的类。换句话说:T和II将是ImageSingleBand的子类。
因此,'WrapDetectDescribeSurf'的实例化可能如下所示:
new WrapDetectDescribeSurf<ImageInteger, ImageFloat>();
ImageInteger和ImageFloat是ImageSingleBand的具体子类。
更具体一点:
ImageSingleBand(http://boofcv.org/javadoc/boofcv/struct/image/ImageSingleBand.html)的子类可以是
这些类实现了抽象方法。