当前位置: 首页 > 面试题库 >

toString()仅对调试有用吗?

孙星鹏
2023-03-14
问题内容

当然,除此之外,它们与基元一起使用。我看到的大多数(如果不是全部)实现仅从程序员的角度来看有用。

编辑
:我知道我应该覆盖默认行为,这就是为什么我提到实现:)。在某些需要在GUI内使用String表示形式的组件中,我确实获得了覆盖它的价值。但是,至少在JDK中,我看到
许多 实现仅在需要调试对象实例时才使用。

为什么它植根于Object类,因为这似乎仅对GUI /调试有用?我还有其他用途吗?


问题答案:

每当您想要对象的字符串表示形式时,toString()都会很有用。自然,这是出于调试目的而发生的,但也可以有效地将操作结果输出给用户。

例如,假设您有一个处理复数的Complex类。如果要以 3 + 2i之
类的格式将它们打印出给用户,则它们可以方便地定义toString(),因为您不必每次都编写格式,并且输出将保持一致。如果您想将该表示形式更改为例如 3 +
2j
,则只需触摸Complex类中的toString()方法。

因此,toString()也不用于调试目的,而是一种获取对象的一致字符串表示形式的好方法。



 类似资料:
  • 根据这个留档, 这些对象中的每一个的字符串表示都按照列出的顺序附加在一起并输出。 同样根据答案 x将对象x强制为一个字符串,即[object object]: 所以,我的问题是 如果我这样做 因此,在第一种情况下,它只打印对象(不调用方法)。 但是在第二种情况下,它不强制而是简单地打印原始值。为什么会这样呢? 哪种方法不支持调用以打印对象? 请注意-这不是这个问题的重复。

  • 我有一个带有ListView的FutureBuilder来显示自定义项(小部件),其值是从。txt文件中读取的。 问题是,只有当我在调试模式或运行模式下启动应用程序时,这些项才会显示。当我试图用AppLauncher打开应用程序时(就像“普通”用户会这样做一样),listView是空的。我在一个AVD和一个“真正的”设备上试过这个。

  • 问题内容: 想要有关对象的某些调试信息时,我曾经使用toString的隐式调用,因为在对象为null的情况下,它不会引发Exception。 例如: 代替: 除了null以外,还有什么区别吗? 如果前者不起作用,后者可以工作吗? 编辑: 在隐式调用的情况下,到底做了什么? 问题答案: 没有什么区别。使用较短且经常使用的那一种。 如果您实际上由于其他原因想要获取对象的字符串值,并且希望它为null友

  • 问题内容: 最近我一直在用Python编写很多代码。而且我一直在使用以前从未使用过的数据,使用以前从未见过的公式来处理大型文件。所有这些使我写了很多打印语句来验证是否一切正常,并确定故障点。但是,通常,输出太多信息不是一个好习惯。仅当我要调试时才使用打印语句,而当我不希望打印它们时如何跳过它们? 问题答案: 该模块具有您想要的一切。乍一看似乎有些多余,但只使用您需要的零件。我推荐使用切换日志级别和

  • 我有一个Async appender,仅在我设置级别=调试时才有效。对于“错误”级别,它不会记录任何内容。 我不确定这个配置中缺少了什么。这是我正在尝试使用的自定义appender }

  • 问题内容: 我正在阅读有关Java流的信息,并在不断学习中发现新事物。我发现的新peek()功能之一就是功能。我偷看的几乎所有内容都说应将其用于调试Streams。 如果我有一个Stream,其中每个帐户都有一个用户名,密码字段以及一个login()和loggingIn()方法,该怎么办。 我也有 和 为什么会这么糟糕? 现在,据我所知,这确实可以实现预期的目的。它; 取得帐户清单 尝试登录每个帐