泛型 反射 类型 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/

(0)

相关推荐