2

Linux上で実行されているIBMJVMを備えたJava実動システムがあります。
顧客から、ログに出力された次の例外が報告されます。から
java.lang.ClassCastException: [B incompatible with java.lang.String
返された個々の属性をキャストしようとした場合: javax.naming.directory.InitialDirContext(...)
この例外から、文字列に変換できなかったタイプを特定できません。「B」とは?

通常、クラスキャストのエラーメッセージは次のようになります。
java.lang.ClassCastException: java.lang.Integer incompatible with java.lang.String
しかし、ご覧のとおり、最初の印刷ではそうではありません。
Bという名前の実際のクラスがあるのではないかと思いましたが、javax.namingの下にあるクラスを見つけることができました...
ここで名前の難読化が行われていますか?
文字列にキャストする前に、インスタンスのクラスを出力するバージョンをお客様に送信する予定です。
i.getClass().getCanonicalName()
ただし、これらのピンポンは、アイデアがあり、その前に私を助けてくれる場合は、1週間かかります。 !!

4

1 に答える 1

4

[Bの配列ですbyte(つまり、byte[])。[は名前の一部であることに注意してください。

これらの名前の生成方法に関する規則については、 APIをClass.getName()参照してください。

于 2010-01-28T12:19:03.647 に答える