2015-09-16 13 views
5

EclipseでJavaプログラムをデバッグすると、任意の配列の内容が表示されます(変数ビュー)。画像は下の図を参照してください(ByteArrayInputStream.bufフィールド)。Eclipseデバッガで配列の長さを表示する方法は?

Eclipse Variables view with an array

しかし、私はどこでも配列の長さフィールドを見つけることができません。 Eclipseデバッガで配列の長さを表示する方法はありますか?どうしたらいいですか?

+2

最新アレイセグメントは、(例えば[500..599])の長さを保持しています。 –

+0

また、式タブから長さをチェックすることもできます。 'array.length'や 'array.size()'などを追加するだけです。 – Rustam

答えて

3

あなたは "式" ビューを使用してlengthメンバーを評価することができます

Expression tab screenshot

を最後のインデックスが1以下であることに注意してください長さよりも!

publicアレイメンバーの場合、これは機能しますが、保護されたメンバーには明示的なキャストが必要なようです。次のコードを考えてみましょう:

... 
ByteArrayInputStream is = new ByteArrayInputStream(new byte[1769]); 
... 

is.bufを評価する際に、式ビューが質問に示すように、配列のダンプを示しているが、is.buf.lengthを評価すること<error(s)_during_the_evaluation>で失敗します。我々はByteArrayInputStreamに明示的なキャストを追加した場合、評価は動作します:

enter image description here

+0

私の場合のように** private **や** protected **フィールドでは機能しません: 'is.buf.length'。 Eclipseは次のように出力します: ' bufを解決できないか、フィールドではありません。 ' – dedek

+1

問題は実際には間違った型(' InputStream')でした。これはちょうど良いwoks: '((ByteArrayInputStream)is).buf.length' – dedek

+0

良い観察!なぜ評価式が明示的にここにキャストする必要があるのか​​わからないのですが(これは 'buf'が配列であることを既に知っているからです)、あなたが言うことを正確に再現できます... –

3

@ThorbjørnRavnAndersenありがとうございます(コメント)。あなたが正しいです、最新の配列セグメント(私の場合:[1700..1768])は長さを保持します。

全体像:

the whole picture

関連する問題