EclipseでJavaプログラムをデバッグすると、任意の配列の内容が表示されます(変数ビュー)。画像は下の図を参照してください(ByteArrayInputStream.buf
フィールド)。Eclipseデバッガで配列の長さを表示する方法は?
しかし、私はどこでも配列の長さフィールドを見つけることができません。 Eclipseデバッガで配列の長さを表示する方法はありますか?どうしたらいいですか?
EclipseでJavaプログラムをデバッグすると、任意の配列の内容が表示されます(変数ビュー)。画像は下の図を参照してください(ByteArrayInputStream.buf
フィールド)。Eclipseデバッガで配列の長さを表示する方法は?
しかし、私はどこでも配列の長さフィールドを見つけることができません。 Eclipseデバッガで配列の長さを表示する方法はありますか?どうしたらいいですか?
あなたは "式" ビューを使用してlength
メンバーを評価することができます
を最後のインデックスが1以下であることに注意してください長さよりも!
publicアレイメンバーの場合、これは機能しますが、保護されたメンバーには明示的なキャストが必要なようです。次のコードを考えてみましょう:
今...
ByteArrayInputStream is = new ByteArrayInputStream(new byte[1769]);
...
、is.buf
を評価する際に、式ビューが質問に示すように、配列のダンプを示しているが、is.buf.length
を評価すること<error(s)_during_the_evaluation>
で失敗します。我々はByteArrayInputStream
に明示的なキャストを追加した場合、評価は動作します:
私の場合のように** private **や** protected **フィールドでは機能しません: 'is.buf.length'。 Eclipseは次のように出力します: '
問題は実際には間違った型(' InputStream')でした。これはちょうど良いwoks: '((ByteArrayInputStream)is).buf.length' – dedek
良い観察!なぜ評価式が明示的にここにキャストする必要があるのかわからないのですが(これは 'buf'が配列であることを既に知っているからです)、あなたが言うことを正確に再現できます... –
最新アレイセグメントは、(例えば[500..599])の長さを保持しています。 –
また、式タブから長さをチェックすることもできます。 'array.length'や 'array.size()'などを追加するだけです。 – Rustam