为了账号安全,请及时绑定邮箱和手机立即绑定

[L数组符号-它来自哪里?

[L数组符号-它来自哪里?

SMILET 2019-12-21 11:03:52
我经常看到例如使用[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();


查看完整回答
反对 回复 2019-12-21
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

在JNI(通常在内部是JVM)中使用它来指示类型。基元用单个字母表示(Z表示布尔值,I表示整数等),[表示数组,L表示类(以a终止;)。

编辑:详细说明为什么没有终止]-此代码是允许JNI / JVM快速识别方法及其签名。它旨在尽可能紧凑以使解析速度更快(=尽可能少的字符),因此[用于非常简单的数组(使用哪种更好的符号?)。I对于int同样明显。


查看完整回答
反对 回复 2019-12-21
  • 3 回答
  • 0 关注
  • 486 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信