Java相当于C#泛型数组声明?

时间:2018-03-14 01:43:20

标签: java c# generics

我有一个通用类我希望从C#转换为Java。课程以这种方式开始:

   public class StackImplementationUsingDynamicArray<T>
    {
        private T[] _array = new T[10];
    }

我似乎无法获得声明的等效Java代码。此代码至少编译(带有警告)但抛出运行时异常:

   public class StackImplementationUsingDynamicArray<T>
    {
        private T[] _array = (T[])Array.newInstance (StackImplementationUsingDynamicArray.class, 10);
    }

是否可以在Java中执行此操作?代码应该是什么?提前感谢任何指示。

1 个答案:

答案 0 :(得分:1)

是 - 但您需要将实际类型的类对象传递给类的构造函数:

public class StackImplementationUsingDynamicArray<T>
{
    private T[] _array;
    public StackImplementationUsingDynamicArray(Class<T> clazz) {
        _array = (T[]) Array.newInstance(clazz, 10);
    }

然后你可以这样使用:

StackImplementationUsingDynamicArray<String> a =
        new StackImplementationUsingDynamicArray<>(String.class);