gpt4 book ai didi

java - 如何在 Delphi 对象或字符串中隐式使用 ToString()?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:40:01 24 4
gpt4 key购买 nike

德尔福就像英国女王卫队。它不喜欢歧义,甚至可能会为了保护硬代码而杀人。但 Java 几乎是一个街角女人。当我使用它时,它是 java:

 Button button = new Button();
String a = "This is a " + button;

我得到 This is a button

但是如果我在 Delphi 中这样做:

 ShowMessage('This is a ' + Button1);

我得到一个错误,因为 Delphi 有 toString() 方法(现在)但它没有隐式调用它。因为文字字符串不是 OP 中的对象。正确的用法是:

 ShowMessage('This is a ' + Button1.toString());

有什么方法可以覆盖此行为,使其像 Java 一样工作吗?

供引用:How an object will call toString method implicitly?

最佳答案

无法对对象实例强制执行隐式转换或方法调用。

如果这是您控制的记录,那么您可以实现一个 Implicit 类运算符,该运算符将执行转换为 string

您提到的问题讨论链接只是 PrintStream.println() 的一个实现细节。这依赖于 String.valueOf() 为任何对象提供字符串表示的能力,而该对象又依赖于 Object.toString()。事实上,那里关于 println() 的讨论与 Java 中 + 运算符的工作方式无关,这是您问题中的相关问题。

Delphi 的 TObject 有一个虚拟的 ToString 方法,可用于执行相同的目的。因此,在 Delphi 代码中使用与 PrintStream.println() 完全相同的技术将非常容易。

关于java - 如何在 Delphi 对象或字符串中隐式使用 ToString()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17365902/

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