【问题标题】:Java Interface inheritence with multiple generic bounds具有多个泛型边界的 Java 接口继承
【发布时间】: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


    【解决方案1】:

    只是一个错字。

    替换:

    public interface SpartialIndex<T,I extends Position<T,I>> 
    

    作者:

    public interface SpartialIndex<T,I> extends Position<T,I> 
    

    【讨论】:

      猜你喜欢
      • 2021-10-27
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      相关资源
      最近更新 更多