我有一个通用类我希望从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中执行此操作?代码应该是什么?提前感谢任何指示。
答案 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);