gpt4 book ai didi

java - ((Object)(this)).toString() 是否总是调用基本实现?

转载 作者:行者123 更新时间:2023-11-29 06:27:07 24 4
gpt4 key购买 nike

我有一个 toString() 的实现,它依赖于一些可能引发异常的代码。

在那种情况下,我想故障转移到默认的 toString() 方法。

为此,使用安全吗

catch (Exception e){
return ((Object)(this)).toString();
}

作为该异常的处理程序?换句话说,强制转换是否会强制使用 Object toString() 方法。

它似乎适用于我的情况,但我担心它不标准并且可能导致递归。

最佳答案

完全没有。 JVM 在运行时根据对象的确切类型确定要调用的方法。

你漂亮的小 Actor 没有取得任何成就。因为您不能通过强制转换来更改引用的运行时类型!

一个解决方案是:

public String superToString() {
return super.toString();
}

在这些类中,并显式调用该方法。或者,当前执行该转换的行当然可以替换为 return super.toString()

但是,尤其是选项 1 只会增加“更差到更差”。如:toString() 的约定是返回一个字符串。

永远不要编写toString()方法

  • 需要大量的高强度工作或
  • 可以抛出异常!

参见 How to use toString method in Java进一步思考。

说真的:在任何较大的项目中,您 控制何时/多久/以何种方式在您的对象上调用toString()。您最好确保这些调用快速返回,返回合理的信息并且永远不会抛出异常。

关于java - ((Object)(this)).toString() 是否总是调用基本实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52151559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com