创建未知类型的数组人们已经问过类似的问题,但我不确定我是否理解了答案,或者它们是否适用于我的情况。通过参数
如何创建一个在方法参数中定义的类型的数组?
public void newArray(Object type){
type[] theArray = new type[5];
}
显然,这不起作用,但它是我需要的功能。谢谢!
创建未知类型的数组人们已经问过类似的问题,但我不确定我是否理解了答案,或者它们是否适用于我的情况。通过参数
如何创建一个在方法参数中定义的类型的数组?
public void newArray(Object type){
type[] theArray = new type[5];
}
显然,这不起作用,但它是我需要的功能。谢谢!
您可以使用Array.newInstance(Class, int)
,但您需要通过Class
(而不是Object
本身),并使用通用类型。像,
public <T> void newArray(Class<T> type){
T[] theArray = (T[]) Array.newInstance(type, 5);
}
1)您可以创建,将采取类列表作为参数,并返回一个数组的函数:
@SuppressWarnings("unchecked")
public static <T> T[] newArray(Class<T> clazz, List<T> list){
T[] array = (T[]) Array.newInstance(clazz, list.size());
list.toArray(array); // fills array with values from list
return array;
}
2)您可以创建一个将返回一个数组你一个函数:
@SuppressWarnings("unchecked")
public static <T> T[] newArray(Class<T> clazz, int size){
return (T[]) Array.newInstance(clazz, size);
}
这个函数返回正确类型的数组,所以你可以在任何需要使用它,并与对象(包含空值)填充它。
int size = 5;
MyType[] myArray = newArray(MyType.class, size);
for (int i = 0; i < size; i++) {
myArray[i] = new MyType();
}
3)你可以做一个列表,不是让你的方法里的数组:
List<MyType> list = new ArrayList<MyType>();
MyType[] array = list.toArray(new MyType[list.size()]);
之前,我们试图回答,你确定你的问题不是[XY问题(HTTP ://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)变相?你不妨考虑告诉我们你正试图解决的整体问题,而不是你目前如何解决它。 –
您可能需要[泛型类型](https://www.tutorialspoint.com/java/java_generics.htm) –
您究竟在问什么? Java不允许你在参数中定义类型。你可以计算出参数的确切类型,但是这是个问题吗?你可以创建一个Object类型的数组作为Object [] theArray = new Object [5];'这可以满足你所有的需求。 – Serge