【发布时间】:2015-10-30 06:45:23
【问题描述】:
我正在尝试使用将 TreeMap 作为参数的 setter 方法编写接口。
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() 实现,但是放在那里没有帮助。
我对编译器抱怨的原因感到困惑。
任何帮助将不胜感激
谢谢
【问题讨论】: