Object o = new Long[0]
System.out.println( o.getClass().isArray() )
System.out.println( o.getClass().getName() )
Class ofArray = ???
Run Code Online (Sandbox Code Playgroud)
运行前3行发出;
true
[Ljava.lang.Long;
Run Code Online (Sandbox Code Playgroud)
如何得到 ???要打字?我可以解析字符串并执行Class.forname(),但那很糟糕.什么是简单的方法?
sak*_*ana 69
写吧
Class ofArray = o.getClass().getComponentType();
Run Code Online (Sandbox Code Playgroud)
来自JavaDoc:
public Class<?> getComponentType()
返回
Class
表示数组的组件类型.如果此类不表示此方法返回的数组类null
.
ddi*_*rov 22
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html#getComponentType():
Run Code Online (Sandbox Code Playgroud)public Class<?> getComponentType()
返回
Class
表示数组的组件类型.如果此类不表示数组类,则此方法返回null ...
@ddimitrov是正确的答案.放入代码看起来像这样:
public <T> Class<T> testArray(T[] array) {
return array.getClass().getComponentType();
}
Run Code Online (Sandbox Code Playgroud)
更一般地说,我们可以先测试一下这个类型是否代表一个数组,然后得到它的组件:
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");
}
Run Code Online (Sandbox Code Playgroud)
一个具体示例是将此方法应用于已知组件类型的数组:
String[] arr = {"Daniel", "Chris", "Joseph"};
arr.getClass().getComponentType(); // => java.lang.String
Run Code Online (Sandbox Code Playgroud)
很简单!
归档时间: |
|
查看次数: |
25731 次 |
最近记录: |