有没有办法将java数据类型输出到控制台?

我正在尝试调试我inheritance的程序。 这个程序包含字符串,数组列表和集合,类型之间的大量转换,我需要做一些字符串操作( substring等)

当打印到控制台时,数据看起来像字符串(例如,它是一行文本,如Johnson, JohnChicago Region ),但我的代码错误输出各种index out of range错误,这表明我的代码要转换为字符串不工作。

我想试着找出正在进入的数据类型,并让我的方法validation程序是否按预期运行。 有没有办法在Java中找到字段类型? 在一个完美的世界中,我可以在每一步生成控制台输出,它会给我数据值,无论是字符串,数组列表还是集合。 可以这样做吗?

给定任何对象的实例,您可以调用它的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 

打印原始变量的类型有点复杂:有关详细信息,请参阅此SO问题 。

对于任何对象x ,您可以打印x.getClass()

.class.getName(); 在任何对象中

如果您只想打印类型, instance.getClass()是可行的方法。 如果要根据类型分支行为,也可以使用instanceof

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

使用getClass()方法。

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