创建使用Class对象通用的二维数组 [英] Creating generic two-dimensional array using Class object
本文介绍了创建使用Class对象通用的二维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有泛型类< T>在构造函数中提供
对象。我想创建二维数组 T [] []
在此构造,这是可能的但?
I have generic type with Class<T>
object provided in constructor. I want to create two-dimensional array T[][]
in this constructor, is this however possible?
推荐答案
同的Java如何:通用阵列创建而是扩大到2D:
import java.lang.reflect.Array;
public class Example <T> {
private final Class<? extends T> cls;
public Example (Class<? extends T> cls) {
this.cls = cls;
}
public void arrayExample () {
// a [10][20] array
@SuppressWarnings("unchecked")
T[][] array = (T[][])Array.newInstance(cls, 10, 20);
System.out.println(array.length + " " + array[0].length + " " + array.getClass());
}
public static final void main (String[] args) {
new Example<Integer>(Integer.class).arrayExample();
}
}
请注意阅读上述申诉委员会的评论之后:要扩展到多个维度,只要添加的维和[]参数的newInstance()(CLS是A类,D1至D5是整数):
Note after reading JAB's comment above: To extend to more dimensions, just add []'s and dimension parameters to newInstance() (cls is a Class, d1 through d5 are integers):
T[] array = (T[])Array.newInstance(cls, d1);
T[][] array = (T[][])Array.newInstance(cls, d1, d2);
T[][][] array = (T[][][])Array.newInstance(cls, d1, d2, d3);
T[][][][] array = (T[][][][])Array.newInstance(cls, d1, d2, d3, d4);
T[][][][][] array = (T[][][][][])Array.newInstance(cls, d1, d2, d3, d4, d5);
请参阅<$c$c>Array.newInstance()$c$c>了解详情。
See Array.newInstance()
for details.
这篇关于创建使用Class对象通用的二维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文