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

我经常看到例如使用[L类型来表示数组的消息,例如:


[Ljava.lang.Object; cannot be cast to [Ljava.lang.String;


(以上是我刚刚拔出的一个任意示例。)我知道这表示一个数组,但是语法从何而来?为什么要开始[却没有结束方括号?为什么是L?它纯粹是武断的,还是背后有其他历史/技术原因?


SMILET
浏览 487回答 3
3回答

有只小跳蛙

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();

侃侃尔雅

在JNI(通常在内部是JVM)中使用它来指示类型。基元用单个字母表示(Z表示布尔值,I表示整数等),[表示数组,L表示类(以a终止;)。编辑:详细说明为什么没有终止]-此代码是允许JNI / JVM快速识别方法及其签名。它旨在尽可能紧凑以使解析速度更快(=尽可能少的字符),因此[用于非常简单的数组(使用哪种更好的符号?)。I对于int同样明显。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java