在泛型中扩展

时间:2012-04-01 14:01:14

标签: java generics extends

我的代码是这样的: 我有两节课 头等舱:

public class Box<E> {

E data1;

    public Box(E data) {
        this.data1 = data;
    }
    public E getData() {
        return data1;
    }
}

第二课:

public class IntBox extends Box<Integer>{

    Integer data;

    public IntBox(Integer data) {
        this.data = data;
    }

    public Integer getData() {
        return data;
    }
}

为什么这个课程不从Box<E>扩展?

3 个答案:

答案 0 :(得分:1)

那不会编译。

你的第二堂课应该是:

public class IntBox extends Box<Integer>{  
    public IntBox(Integer data) {
        super(data);
    }
}

然后它将正确扩展它并使用Box的方法。

答案 1 :(得分:1)

我不会为此目的创建一个新类,因为IntBox类不会向Box添加功能,而只是使其更具限制性。相反,只需声明Box使用Integer。即,

public class Foo {
   public static void main(String[] args) {
      Box<Integer> intBox = new Box<Integer>(300);
      System.out.println("data is: " + intBox.getData());
   }
}

答案 2 :(得分:0)

后一类从第一个泛型类扩展而来。这个例子应该不是更大的问题。只需确保通过super(data)调用基类的构造函数;在IntBox构造函数中。