泛型 反射 类型 new String[0]
ArrayList类,toArray(),new String[0].getClass()
错误语法:new String[]
new String[].getClass()会报错array initializer expected,即需要初始化。
创建一个数组时需要指定容量,
String[] strArray = new String[]这样写也会报错array initializer expected。
代码使用:list.toArray(T [] t)
List<URL> urls = new ArrayList<>(archives.size());
return createClassLoader(urls.toArray(new URL[0]));
转自https://www.cnblogs.com/grey-wolf/p/13253014.html
ArrayList源码
public <T> T[] toArray(T[] a) {
if (a.length < size)
return (T[]) Arrays.copyOf(elementData, size, a.getClass());
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
数组描述符:[L类名;
class com.web.Student
class [Lcom.web.Student;
[代表array。
Lxxx;代表类型,由于类可以有任何名称,因此很难识别它是什么类,因此L开头,拼接类名,以;结尾
JVM数组描述符
[Z = boolean
[B = byte
[S = short
[I = int
[J = long
[F = float
[D = double
[C = char
[L = any non-primitives(Object)
要获取主要数据类型,您需要:
[Object].getClass().getComponentType();
如果"对象"不是数组,它将返回null。
要确定它是否为数组,只需调用:
[Any Object].getClass().isArray()
要么
Class.class.isArray();
转自https://www.codenong.com/5085889/