Java:Generics:Compilation Error When Trying implement a meth



我正试图用setter方法编写一个接口,该方法将TreeMap作为参数。

TreeMap可以具有从AbstractNResource类派生的类的对象。AbstractNResource的类定义是用泛型编写的,它可以接受来自另外两个类层次结构的两个参数。

我在接口中编写编译器将接受的setter方法时遇到了问题。

这是接口(带有编译错误),我称之为IDataLoader:

public interface IDataLoader {
        public abstract void setFrameDataMap(    
            // Compile Error: Syntax error on token "extends", , expected
            TreeMap<Long, AbstractNResource<AbstractNRequestableResourceData, INDescriptor>.AbstractFrameData> frameDataMap);
}    

这是TreeMap可以拥有的对象类型的父类:

public abstract class AbstractNResource<T extends AbstractNRequestableResourceData, D extends INDescriptor>
        extends
        AbstractVizResource<AbstractNRequestableResourceData, IDescriptor>
        implements INResource {
        public abstract class AbstractFrameData {}
        protected TreeMap<Long, AbstractFrameData> frameDataMap;
}

下一步,我有一个AbstractDataLoader类,它部分实现了接口IDataLoader:

public abstract class AbstractDataLoader<T extends AbstractNatlCntrsRequestableResourceData, D extends INatlCntrsDescriptor>
        implements
        IDataLoader<AbstractNatlCntrsRequestableResourceData, INatlCntrsDescriptor> {}

我还有一个WaveSatDataLoader类,它扩展了那个抽象类。这就是发生编译错误的地方:

public class WaveSatDataLoader extends
        AbstractDataLoader<WaveSatResourceData, NCMapDescriptor> {
    @Override
    public void setFrameDataMap(TreeMap<Long,AbstractNatlCntrsResource<WaveSatResourceData, NCMapDescriptor>.AbstractFrameData> frameDataMap) {
        System.out.println("To do");
    }
}

编译错误为:

方法setFrameDataMap(TreeMap.AbstractFrameData>)WaveSatDataLoader类型的必须重写或实现超类型方法

我没有在AbstractDataLoading类中实现setFrameDataMap(),但在那里放一个并没有帮助。

我不明白编译器为什么抱怨。

如有任何帮助,将不胜感激

感谢

编译器抱怨,因为您试图用具有不同签名的方法实现接口方法。

IDataLoader中,setFrameDataMap的自变量的第二种类型参数是

AbstractNResource<AbstractNRequestableResourceData, INDescriptor>.AbstractFrameData

而在CCD_ 3中它是

AbstractNatlCntrsResource<WaveSatResourceData, NCMapDescriptor>.AbstractFrameData

我还对IDataLoader是否应该是泛型感到困惑。你已经写了

implements IDataLoader<AbstractNatlCntrsRequestableResourceData, INatlCntrsDescriptor> 

然而在代码的第一部分中CCD_ 5不具有类型参数。

相关内容

  • 没有找到相关文章

最新更新