我經(jīng)??吹嚼缡褂肹L類型來表示數(shù)組的消息,例如:[Ljava.lang.Object; cannot be cast to [Ljava.lang.String;(以上是我剛剛拔出的一個任意示例。)我知道這表示一個數(shù)組,但是語法從何而來?為什么要開始[卻沒有結(jié)束方括號?為什么是L?它純粹是武斷的,還是背后有其他歷史/技術(shù)原因?
3 回答

有只小跳蛙
TA貢獻1824條經(jīng)驗 獲得超8個贊
JVM數(shù)組描述符。
[Z = boolean
[B = byte
[S = short
[I = int
[J = long
[F = float
[D = double
[C = char
[L = any non-primitives(Object)
要獲取主要數(shù)據(jù)類型,您需要:
[Object].getClass().getComponentType();
如果“對象”不是數(shù)組,它將返回null。要確定它是否為數(shù)組,只需調(diào)用:
[Any Object].getClass().isArray()
要么
Class.class.isArray();

侃侃爾雅
TA貢獻1801條經(jīng)驗 獲得超16個贊
在JNI(通常在內(nèi)部是JVM)中使用它來指示類型?;脝蝹€字母表示(Z表示布爾值,I表示整數(shù)等),[表示數(shù)組,L表示類(以a終止;)。
編輯:詳細說明為什么沒有終止]-此代碼是允許JNI / JVM快速識別方法及其簽名。它旨在盡可能緊湊以使解析速度更快(=盡可能少的字符),因此[用于非常簡單的數(shù)組(使用哪種更好的符號?)。I對于int同樣明顯。
添加回答
舉報
0/150
提交
取消