gpt4 book ai didi

java - 如何向下转换返回的对象?

转载 作者:行者123 更新时间:2023-12-01 21:56:06 25 4
gpt4 key购买 nike

我在尝试对方法返回的对象进行向下转换时遇到问题。我知道我正在做的事情是不正确的,但我没有找到解决方案。

请参阅下面的代码。

这是一个 Controller 类,我可以在其中处理异常:

public class SubsystemFacade {

public CustomClass1 method1() {
try {
//do something and return a new CustomClass1 object
} catch (Exception e) {
return (CustomClass1) this.handleExceptions(e); //Should return a CustomClass1 object but CastException is throwed
}
}

public CustomClass2 method2() {
try {
//do something and return a new CustomClass2 object
} catch (Exception e) {
return (CustomClass2) this.handleExceptions(e); //Should return a CustomClass2 object but CastException is throwed
}
}

private SuperCustomClass handleExceptions(Exception e) {
//do something, log error...
SuperCustomClass customClass = new SuperCustomClass(...);
return customClass;
}

}

我希望 SubsystemFacade 始终返回一个对象作为 CustomClass1 或 CustomClass2,而不返回异常。

这是我的模型:

public class SuperCustomClass {...}
public class CustomClass1 extends SuperCustomClass {...}
public class CustomClass2 extends SuperCustomClass {...}

最佳答案

您无法将 SuperCustomClass 对象向下转换为 CustomClass2,因为它不是 CustomClass2

转换的想法是更改对象的静态类型(引用类型)。您没有更改对象的实际(动态)类型。

例如,可以向下转换:

SuperCustomClass obj = new CustomClass2(...)

因为实际类型是CustomClass2。

在你的情况下,你正在创建new SuperCustomClass(..) - 所以你不能将其向下转换为CustomClass2

关于java - 如何向下转换返回的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34257691/

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