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

Posted

技术标签:

【中文标题】有没有办法将 java 数据类型输出到控制台?【英文标题】:Is there a way to output the java data type to the console? 【发布时间】:2012-05-13 09:14:53 【问题描述】:

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

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

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

【问题讨论】:

顺便说一句,如果你没有得到ClassCastException,那么转换为String 正在工作。 【参考方案1】:

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

【讨论】:

【参考方案2】:

使用getClass() 方法。

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

【讨论】:

【参考方案3】:

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

if ( x instanceof String )

   // handle string

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

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

【讨论】:

我会做 x.getClass.getName() @PaulVargas if(object == null) sout("null") 那么数组呢?对象或基元数组? 例如ints 的数组将打印[I

以上是关于有没有办法将 java 数据类型输出到控制台?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法以颜色将文本输出到 R 控制台

UNPIVOT 返回数据类型

有没有办法将 uicontrol 回调函数的输出关联到它自己的“用户数据”?

有没有办法将系统日志消息重定向到标准输出?

在 NestJS 中,有没有办法将数据从 Guards 传递到控制器?

有没有办法阻止Visual Studio将Thread启动和完成的语句打印到输出窗口?