この文字は、JVMの内部署名とクラス名の表現に由来します。
はJVM Specification §4.3.2. Field Descriptors参照:
B byte signed byte
C char Unicode character code point in the Basic Multilingual Plane,
encoded with UTF-16
D double double-precision floating-point value
F float single-precision floating-point value
I int integer
J long long integer
L ClassName ; reference an instance of class ClassName
S short signed short
Z boolean true or false
[ reference one array dimension
配列型は、例えば、その素子署名、続いて、各ディメンションの[
から成りint[]
の[I
。同様に、Object[]
は[Ljava/lang/Object;
で内部的に表されます。
すなわちClass.getName()
によって返されるアプリケーション可視名の内部クラス名からの変換は、最初に実施された場合、それはちょうど配列表記ため.
ではなく気にせず/
を変換するように実施された、と思われます。後で、互換性の理由から変更されていませんでした。
のJava 8の問題を解決するためにgetTypeName()
を導入注、すなわちString[].class.getTypeName()
利回りjava.lang.String[]
。
http://stackoverflow.com/questions/5085889/l-array-notation-where-does-it-come-fromとhttp://stackoverflow.com/questions/3442090/java-what-is-this-ljava-lang-object –
これはありません。配列接頭辞は '[' '。 – chrylis
なぜ 'L'は別の文字の代わりに、なぜですか?それは恣意的でしたか?それとも何か意味がありましたか? – GreenGiant