在Java中,如何动态确定数组的类型?

在Java中,如何动态确定数组的类型?,java,Java,运行前3行发射 Object o = new Long[0] System.out.println( o.getClass().isArray() ) System.out.println( o.getClass().getName() ) Class ofArray = ??? 我怎么得到???长型?我可以解析字符串并执行Class.forname(),但这太糟糕了。最简单的方法是什么 公共类getComponentType() 返回表示数组的组件类型的类。如果此类不表示数组类,则此方法返

运行前3行发射

Object o = new Long[0]
System.out.println( o.getClass().isArray() )
System.out.println( o.getClass().getName() )
Class ofArray = ???
我怎么得到???长型?我可以解析字符串并执行Class.forname(),但这太糟糕了。最简单的方法是什么

公共类getComponentType()
返回表示数组的组件类型的
。如果此类不表示数组类,则此方法返回null

只要写

public Class<?> getComponentType()
发件人:

公共类getComponentType()

返回表示数组的组件类型的
。如果此类不表示数组类,则此方法返回
null


@迪米特罗夫是正确的答案。将其放入代码中,如下所示:

Class ofArray = o.getClass().getComponentType();

非常简单

如果第一个元素为null,即字符串[]arr={null,“Chris”,“Joseph”};
Class ofArray = o.getClass().getComponentType();
public <T> Class<T> testArray(T[] array) {
    return array.getClass().getComponentType();
}
Object maybeArray = ...
Class<?> clazz = maybeArray.getClass();
if (clazz.isArray()) {
    System.out.printf("Array of type %s", clazz.getComponentType());
} else {
    System.out.println("Not an array");
}
String[] arr = {"Daniel", "Chris", "Joseph"};
arr.getClass().getComponentType();              // => java.lang.String