2012-05-03 18 views
20

私が継承したプログラムをデバッグしようとしています。このプログラムは、文字列、配列リストやコレクション、タイプ間のキャストの多くが含まれており、例えばコンソール(に印刷されたとき、私はいくつかの文字列操作(substringなど)Javaデータ型をコンソールに出力する方法はありますか?

データが文字列のようなを見て行う必要があり、それはですJohnson, JohnまたはChicago Regionのようなテキスト行ですが、私のコードはさまざまなindex out of rangeエラーでエラーになり、Stringにキャストするコードが動作していないことを示しています。

私は、プログラムが期待どおりに動作していることを確認するために、どのデータ型が来ているのかを調べてメソッドを残してみたいと思っています。 Javaでフィールド型を見つける方法はありますか?完璧な世界では、私はデータ値と、それが文字列、配列リスト、またはコレクションのいずれであるかを示す、あらゆるステップでコンソール出力を生成することができました。それはできますか?

+1

ところで、もしあなたが 'ClassCastException'を取得していなければ、' String' *へのキャストは*動作しています。 –

答えて

37

は、オブジェクトの種類を記述するClassオブジェクトのインスタンスを取得するにはgetClass()メソッドです。 Classオブジェクトを使用して

、あなたは簡単に印刷することができ、それは型の名前です:

java.lang.Integer 

の場合:

Integer number=Integer.valueOf(15); 
System.out.println(number.getClass().getName()); 

例えばあるクラスの完全修飾名を慰めるためにこの印刷より簡潔な出力が必要な場合は、代わりに次の文字を使用できます。

Integer number=Integer.valueOf(15); 
System.out.println(number.getClass().getSimpleName()); 

getSimpleNameクラスの名前:

Integer 

プリミティブの変数のタイプを印刷するには、もう少し複雑です。詳細についてはthis SO questionを参照してください。

5

どのオブジェクトでもxの場合、x.getClass()を印刷できます。

+1

私はx.getClass.getName()を行います –

+0

'ヌル'インスタンスはどうですか? –

+0

@PaulVargas 'if(object == null){sout(" null ")}' – Mob

0

ちょうど任意のオブジェクト

0

instance.getClass().class.getName();を行うあなただけのタイプを印刷したい場合は移動するための方法です。タイプに基づいて動作を分岐する場合は、instanceofを使用することもできます。

if (x instanceof String) 
{ 
    // handle string 
} 
0

getClass()メソッドを使用してください。任意のオブジェクトのインスタンスを考えると、あなたはそれを呼び出すことができます

Object o; 
System.out.println(o.getClass()); 
関連する問題