如何实现泛型类型的构造函数

时间:2015-06-28 21:10:09

标签: java generics compiler-errors

通过编写自己的泛型类,我没有做太多工作,但我正在尝试创建自己的ArrayStack类,并且无法理解如何正确编写构造函数。

public class ArrayStack<T> implements List<T> {

   private T[] a;
   private int n;

   public ArrayStack(T[] a) {
      this.a = a;
   }
}

我的主要课程使用它:

public class ArrayStackTester {

   public static void main(String[] args) {
      ArrayStack<Integer> numbers = new ArrayStack<Integer>();
   }
}

这会产生一个编译错误,表示The ArrayStack<Integer> is undefined,所以我显然怀疑ArrayStack类中的构造函数存在问题。

为简洁起见,我没有包含所有覆盖List方法。

3 个答案:

答案 0 :(得分:3)

首先尝试定义这个no-args构造函数:

public ArrayStack() {
}

或者,传递一个正确类型的数组:

Integer[] array = new Integer[100];
ArrayStack<Integer> numbers = new ArrayStack<Integer>(array);

答案 1 :(得分:2)

您定义了一个构造函数,它使用T[]。然后你试图调用一个没有参数的构造函数。您需要为new ArrayStack<Integer>()定义构造函数,以执行您需要它执行的操作。

public ArrayStack() {
    // Initialize a (and possibly n) here as appropriate)
}

答案 2 :(得分:1)

是否编译了ArrayStack类? 有一个通用数组,会导致麻烦 How to create a generic array in Java?