Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过参数创建未知类型的数组_Java_Arrays - Fatal编程技术网

Java 通过参数创建未知类型的数组

Java 通过参数创建未知类型的数组,java,arrays,Java,Arrays,人们也问过类似的问题,但我不确定我是否完全理解这些答案,或者它们是否适用于我的情况 如何创建在方法参数中定义的类型的数组 public void newArray(Object type){ type[] theArray = new type[5]; } 显然,这不起作用,但这是我需要的功能。谢谢 您可以使用,但需要传递类(而不是对象本身),并使用泛型类型。像 public <T> void newArray(Class<T> type){ T[] t

人们也问过类似的问题,但我不确定我是否完全理解这些答案,或者它们是否适用于我的情况

如何创建在方法参数中定义的类型的数组

public void newArray(Object type){
    type[] theArray = new type[5];
}
显然,这不起作用,但这是我需要的功能。谢谢

您可以使用,但需要传递
类(而不是
对象本身),并使用泛型类型。像

public <T> void newArray(Class<T> type){
    T[] theArray = (T[]) Array.newInstance(type, 5);
}
public void newArray(类类型){
T[]数组=(T[])数组.newInstance(类型,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;
}
@SuppressWarnings(“未选中”)
公共静态T[]newArray(类clazz,列表){
T[]数组=(T[])array.newInstance(clazz,list.size());
toArray(数组);//用列表中的值填充数组
返回数组;
}
2) 您可以创建一个函数,该函数将为您返回一个数组:

@SuppressWarnings("unchecked")
public static <T> T[] newArray(Class<T> clazz, int size){
    return (T[]) Array.newInstance(clazz, size);
}
@SuppressWarnings(“未选中”)
公共静态T[]newArray(类clazz,int size){
return(T[])Array.newInstance(clazz,size);
}
此函数返回正确类型的数组,以便您可以在任何需要的地方使用它,并用对象填充它(它包含空值)

int size=5;
MyType[]myArray=newArray(MyType.class,size);
对于(int i=0;i
3) 您可以创建列表,然后在方法中创建数组:

List<MyType> list = new ArrayList<MyType>();
MyType[] array = list.toArray(new MyType[list.size()]);
List List=new ArrayList();
MyType[]数组=list.toArray(新的MyType[list.size()]);

在我们尝试回答之前,您确定您的问题不是伪装的吗?你可能想考虑告诉我们你要解决的总体问题,而不是你现在如何解决它。你可能需要一个你到底想要什么?Java不允许您在参数中定义类型。您可以找出参数的确切类型,但这就是问题所在吗?您可以创建对象类型的数组,如
Object[]theArray=newobject[5]
可能满足您的所有需要。@shmosel为True,但OP文章中的参数类型为
对象
。从中推断目标组件类型扩展了
对象
,似乎有点牵强,但可能。
List<MyType> list = new ArrayList<MyType>();
MyType[] array = list.toArray(new MyType[list.size()]);