【发布时间】:2016-04-27 19:36:39
【问题描述】:
我有几门课
public interface Identity<I> {
public I getId();
}
public interface Position<T,I> {
public I getId();
public T getData();
public int getX();
public int getY();
}
public interface SpartialIndex<T,I extends Position<T,I>> {
public void add(T t);
public void addAll(SpartialIndex<T,I> index);
//
public void remove(T t);
public void removeAll(SpartialIndex<T,I> index);
//
public int size();
//
public SpartialIndex<T,I> getRectangle(int left,int top,int right,int bottom);
public SpartialIndex<T,I> getCircle(int centerX,int centerY,int radius);
//
public void translate(SpartialIndex<T,I> index,int translateX,int translateY);
public List<T> getClosests(int x,int y);
public List<T> get(I id);
}
但是当我尝试创建一个默认实现时,我似乎无法让泛型工作。我不会用消息编译。
边界不匹配:类型 I 不是有界的有效替代品 SpartialIndex
类型的参数 >
public class DefaultSpartialIndex<T,I> implements SpartialIndex<T,I> {
public DefaultSpartialIndex() {
super();
}
@Override
public void add(T t) { }
@Override
public void addAll(SpartialIndex<T,I> index) { }
@Override
public void remove(T t) {}
@Override
public void removeAll(SpartialIndex<T, I> index) { }
@Override
public int size() {
return 0;
}
@Override
public SpartialIndex<T, I> getRectangle(int left, int top, int right,int bottom) {
return null;
}
@Override
public SpartialIndex<T, I> getCircle(int centerX, int centerY, int radius) {
return null;
}
@Override
public void translate(SpartialIndex<T, I> index, int translateX,int translateY) { }
@Override
public List<T> getClosests(int x, int y) {
return null;
}
@Override
public List<T> get(I id) {
return null;
}
}
【问题讨论】:
标签: java generics inheritance interface multiple-inheritance