【问题标题】:What is wrong with my code?我的代码有什么问题?
【发布时间】:2011-07-28 11:06:40
【问题描述】:

当我运行以下代码时:

class MyStack<T>
{
    private T[] stack;
    ... private T top;
    private static final int size=50;

    public MyStack()
    {
      stack = new int[size];
      top = 0;
    } 
}

我收到这个错误

MyStack.java:18: generic array creation

stack = new T[size];
...
1 error

正确的代码应该是什么,所以我没有收到此错误

【问题讨论】:

标签: java stack


【解决方案1】:

您不能在 Java 中实例化参数化类型。因此也不会创建它的数组。将T[] 替换为Object[] 并将其创建为new Object[],并在必要时在方法中对T 使用强制转换。

只有Java有Reified generics才有可能。

【讨论】:

  • 我开始看java.util.Stack的源代码。
  • 不,最好看看 ArrayList。 Stack 类只是 Vector 的子类,所以我们甚至看不到那里的数组。
  • @Paulo:ArrayList 不是堆栈。 ArrayDeque 会更好,但这对学生来说相当复杂。此外,如果 OP 了解基本 Java,他应该了解 class Stack extends Vector 的含义,并且在任何 IDE 中,您应该能够(Ctrl)单击 Vector 以查看其源代码。
猜你喜欢
  • 1970-01-01
  • 2019-06-06
  • 1970-01-01
  • 2010-11-08
  • 2016-01-31
相关资源
最近更新 更多