【问题标题】:Is it better to do toString() or cast the Object to String [duplicate]做 toString() 还是将对象转换为字符串更好[重复]
【发布时间】:2015-01-30 20:47:16
【问题描述】:

可能重复:
(String) or .toString()?

我有一个对象。这样做会更好吗

 final String params = myObject.toString();

 final String params =(String)myObject;

【问题讨论】:

  • 更好是什么意思?
  • 您遗漏了有关上下文的任何信息。
  • 没错,那些是苹果和橘子。 toString() 和 cast 是两个不同的东西。
  • final String params = String.valueOf(myObject);怎么样

标签: java


【解决方案1】:

ToString 将适用于所有对象(只要它们不为空)。如果您转换为字符串,则对象必须是字符串,否则它将失败。所以我的猜测是你想要一个 toString() 调用,但这取决于你想做什么!

【讨论】:

    【解决方案2】:

    这取决于你想做什么。

    当您将对象转换为(String)myObject 之类的字符串时,您实际上是在尝试将对象转换为字符串,因此您可以获得类转换异常。

    但是,当调用myObject.toString 时,您会得到该对象的String 格式的逻辑表示,它取决于该对象的toString() 方法的实现。

    【讨论】:

      【解决方案3】:

      当您使用 (String)request.getAttribute("buyertosellerpersoni d") request.getAttribute("buyertosellerpersonid") 时,您会返回一个对象,您将其类型转换为 String 对象。如果您尝试进行类型转换的对象实际上不是 String 对象,您将获得 ClassCastException。确保始终使用字符串值设置属性“buyertosellerpersonid”。

      当你使用request.getAttribute("buyertosellerpersonid").toString() 调用request.getAttribute("buyertosellerpersonid")返回的对象的toString()方法。

      现在取决于此对象的toString() 方法的实现,它会返回什么。如果它是您放入属性“buyertosellerpersonid”的字符串,那么您将获得字符串值。如果是其他内容,那么您将获得其哈希码的无符号十六进制表示。

      对对象进行类型转换总是一个更好的主意。这可确保您始终获得正确的对象,否则将引发异常。您必须捕获此类异常以确保程序正常运行。

      【讨论】:

        【解决方案4】:

        (String)myObject 只有在 myObject 是 String 类的实例时才能正常工作。

        在 myObject.toString() 调用 myObject 类的 toString() 方法的情况下。 toString 方法继承自 Object 类。

        【讨论】:

          【解决方案5】:

          这完全无关紧要,毫无意义 需要担心的性能问题。

          谁真正在乎?它对您的整体产生任何影响的机会 算法非常小。使用最有意义的一种 你的代码。

          还有一点,两者是有区别的,只有当object真的是String的时候才可以强制转换 对象,而您可以在任何对象上调用 toString(),而不仅仅是字符串。

          【讨论】:

            猜你喜欢
            • 2017-10-07
            • 2020-01-25
            • 2020-11-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多