我经常看到例如使用[L类型来表示数组的消息,例如:[Ljava.lang.Object; cannot be cast to [Ljava.lang.String;(以上是我刚刚拔出的一个任意示例。)我知道这表示一个数组,但是语法从何而来?为什么要开始[却没有结束方括号?为什么是L?它纯粹是武断的,还是背后有其他历史/技术原因?
3 回答

有只小跳蛙
TA贡献1824条经验 获得超8个赞
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();

侃侃尔雅
TA贡献1801条经验 获得超16个赞
在JNI(通常在内部是JVM)中使用它来指示类型。基元用单个字母表示(Z表示布尔值,I表示整数等),[表示数组,L表示类(以a终止;)。
编辑:详细说明为什么没有终止]-此代码是允许JNI / JVM快速识别方法及其签名。它旨在尽可能紧凑以使解析速度更快(=尽可能少的字符),因此[用于非常简单的数组(使用哪种更好的符号?)。I对于int同样明显。
添加回答
举报
0/150
提交
取消