Java等价于C泛型数组声明?
我有一个通用类,我想从C转换成Java。这门课是这样开始的:Java等价于C泛型数组声明?,java,c#,generics,Java,C#,Generics,我有一个通用类,我想从C转换成Java。这门课是这样开始的: public class StackImplementationUsingDynamicArray<T> { private T[] _array = new T[10]; } 我似乎无法获得声明的等效Java代码。此代码至少编译时带有警告,但引发运行时异常: public class StackImplementationUsingDynamicArray<T>
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中可以做到这一点吗?代码应该是什么?提前感谢您提供的所有指针。是-但是您需要将实际类型的类对象传递给类的构造函数:
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);
Deque likeThis=新的ArrayDeque@ElliottFrisch为什么是新ArrayQue而不是新ArrayList 10?因为它是用来替换数组的,你不需要List的getint方法吗?@Andreas对不起,我会用ArrayDeque替换stackimplementationusingdynamiccarray。因为基本上就是这样。从Javadoc中,Deques还可以用作后进先出堆栈。此接口应优先于遗留堆栈类使用。当一个deque用作堆栈时,元素会从deque的开头被推送和弹出。感谢您的想法。这实际上只是我学习Java时的“练习”。我以前写过一些C代码,作为面试的练习——这是例行程序之一。我有几个栈的实现——动态数组就是其中之一。ArrayList会让事情变得太简单:我确实看到了类似问题的答案,但是——我遗漏了一些东西。埃尔文的回答非常清楚,我能够完成。事实证明,Java与C的差异足以让我保持警觉……谢谢欧文。这正是我需要的解释。