gpt4 book ai didi

java - 如何重写其类定义不可访问的Object的toString?

转载 作者:行者123 更新时间:2023-12-01 20:13:16 25 4
gpt4 key购买 nike

如果问题主题令人困惑,请原谅[请编辑主题]。

我很难理解/实现这个非常明显的用例。我确信,肯定有一个我想不到的简单解决方案。

我的代码:

Response response = driver.execute("findElement", "{using=xpath, value=//*[@id='myID']}");

System.out.println(response.toString());

现在这个 System.out.println 打印:

(响应:SessionID:ffcebc9226c9671e7f6725a3b1f5a96c,状态:0,值:[org.openqa.selenium.remote.RemoteWebElement@c6bdd2e4 -> 未知定位器])

由于已知原因,它没有正确打印完整的对象。因此,我想要 @Override Response 类的 toString 方法。

现在我的困难是,如果我扩展 Response类,如CommandResponse,然后使用CommandResponse的类型转换> 以下:

CommandResponse response = (CommandResponse) driver.execute("findElement", "{using=xpath, value=//*[@id='myID']}");

我收到错误:

java.lang.ClassCastException: org.openqa.selenium.remote.Response cannot be cast to src.main.CommandResponse

所以,我的问题是,如何正确覆盖?

请指教。

最佳答案

一个合适的解决方案是通过构造函数参数化将 Selenium Response 对象注入(inject)到您的包装对象中。

然后,构造函数将简单地使用您传递的对象分配一个自己的 Response 字段。

类似于:

CommandResponse response = new CommandResponse(driver.execute(...));

...

public CommandResponse(Response arg) {
this.response = arg;
}

这样,您就可以使用包装对象组合。

您的 CommandResponse 对象将覆盖 toString 方法,并通过从 Response< 中选择您需要的任何字段来构建 String 表示形式 对象。

关于java - 如何重写其类定义不可访问的Object的toString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46319500/

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