我正在比较两段代码,试图找出为什么一个有效而另一个无效。
在两个程序中,都有一个变量声明为:
byte[] operatorAndTokenHolder = ...
我第一次跑步
System.err.println(
operatorAndTokenHolder.getClass().getName()
);
这给了
"a.ByteArray"
当我在其他代码上运行该行时,它将返回:
"[B"
这些类型等效吗?以及我如何进一步检查这种假定的byte[]
的类型?
答案 0 :(得分:4)
byte[]
类具有类名"[B"
。请参见javadoc中的Class::getName
。
我该如何进一步检查这种假定的
byte[]
的类型?
如果byte[]
正在向您显示,肯定是getName
...
您还能如何证明这一点?怎么样:
oneThing.getClass() == otherThing.getClass()
或者带有instanceof
的东西。
我认为您错过了其他内容 1 。看看如何/为什么获得"a.ByteArray"
作为应该声明为byte[]
的事物的假定名称。如果它是数组类,则类名称的第一个字符应为'['
。
1-某些可能性:对一个类进行字节码操作,查看错误的源代码文件,构建或部署过程出现问题。可能也是其他人。