51

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

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

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

4

5 回答 5

79

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

于 2012-05-03T20:11:04.227 回答
8

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

于 2012-05-03T19:59:19.517 回答
2

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

if ( x instanceof String )
{
   // handle string
}
于 2012-05-03T20:03:25.197 回答
2

使用getClass()方法。

Object o;
System.out.println(o.getClass());
于 2012-05-03T20:03:53.953 回答
0

只需.class.getName();在任何对象中执行

于 2012-05-03T20:00:13.757 回答