web-dev-qa-db-ja.com

Javaデータ型をコンソールに出力する方法はありますか?

継承したプログラムをデバッグしようとしています。このプログラムには、文字列、配列リスト、コレクション、型間のキャストが多く含まれています。いくつかの文字列操作(substringなど)が必要です。

データlookコンソールに出力されるときの文字列(たとえば、Johnson, JohnChicago Regionなどのテキスト行)ですが、さまざまなindex out of rangeエラー。Stringにキャストするコードが機能していないことを示しています。

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

29
dwwilson66

任意のオブジェクトのインスタンスを指定すると、そのgetClass()メソッドを呼び出して、オブジェクトのタイプを記述するClassオブジェクトのインスタンスを取得できます。

Classオブジェクトを使用すると、そのタイプ名を簡単に印刷できます。

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

これは、クラスの完全修飾名をコンソールに出力します。例では次のとおりです。

Java.lang.Integer

より簡潔な出力が必要な場合は、代わりに使用できます。

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

getSimpleName()は、クラスの名前のみを提供します。

Integer

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

50
Andrea Parodi

任意のオブジェクトxに対して、x.getClass()を出力できます。

6
Keith Randall

任意のオブジェクトで.class.getName();するだけです

0
Ismael Abreu

instance.getClass()は、タイプを印刷するだけの場合の方法です。タイプに基づいて動作を分岐する場合は、instanceofを使用することもできます。

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

getClass()メソッドを使用します。

Object o;
System.out.println(o.getClass());
0
eabraham