为什么L选择类型签名中引用的前缀?是否L代表某种东西,如B代表byte,I代表int什么?或者它被选中是因为C已经分配给了char?
例如,
System.out.println( new String[0].getClass().getName() );
Run Code Online (Sandbox Code Playgroud)
产量:
[Ljava.lang.String;
Run Code Online (Sandbox Code Playgroud)
我已经知道Java规范和Class.getName方法 javadoc 中的解释.
此字符源自JVM内部签名和类名表示.
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
数组类型由a [为每个维度组成,后跟其元素签名,例如[Ifor int[].同样,Object[]由[Ljava/lang/Object;内部代表.
看来,当从内部类名称转换为应用程序可见名称(即返回者Class.getName())首次实现时,它实现为转换/为.但不关心数组表示法.后来,由于兼容性原因,它没有改变.
注意引入Java 8 getTypeName()来解决问题,即String[].class.getTypeName()产量java.lang.String[].
| 归档时间: |
|
| 查看次数: |
2770 次 |
| 最近记录: |