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()]);