理解对象数组类型编码
从函数调用中检索对象并打印其字符串表示形式时,您可能会遇到令人费解的符号就像“[Ljava.lang.Object;”。这个神秘的表达式代表了对象的类类型,但是我们如何破译它的神秘格式?
类类型编码方案在 Class.getName() 中有优雅的详细说明:对于引用类型(不包括数组),返回二进制名称。基本类型和 void 被分配给它们的 Java 关键字。然而,对于数组来说,它们的编码采用独特的形式。
数组编码:分解 [ Ljava.lang.Object; ]
“Ljava.lang.Object;”是表示对象数组的 Java 类的符号,也称为 Object[].class。命名模式遵循以下规则:
理解编码表示法
格式如下:
元素类型编码
boolean Z
byte B
char C
double D
float F
int I
长J
短S
类或interface Lclassname;
解码示例
为了进行说明,请考虑以下示例:
为什么数组会覆盖toString()
与预期相反,数组的 toString() 方法偏离了 Object 类的实现。它返回上述格式的字符串,因为数组不会覆盖此方法。因此,调用继承自 Object 的方法,指定如下:
String.class 返回格式为以下格式的字符串: getClass().getName() '@' Integer.toHexString(hashCode())
替代数组字符串表示
java.util.Arrays 类为数组提供了更用户友好的字符串表示形式:
其他有用资源
以上是Java 数组类型编码中的'[Ljava.lang.Object;”是什么意思?的详细内容。更多信息请关注PHP中文网其他相关文章!