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

How to implement a constructor for a generic type

我在编写自己的通用 classes 方面做得不多,但我正在尝试制作自己的 ArrayStack class 并且无法理解如何正确编写构造函数.

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

   private T[] a;
   private int n;

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

我的主要 class 使用它:

public class ArrayStackTester {

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

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

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

首先尝试定义这个无参数构造函数:

public ArrayStack() {
}

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

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

ArrayStackclass编译了吗?
有泛型数组,麻烦
How to create a generic array in Java?

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

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