gpt4 book ai didi

java - 如何根据 switch case 中的情况实现不同的返回类型

转载 作者:行者123 更新时间:2023-12-01 22:10:04 24 4
gpt4 key购买 nike

我编写了一个基于切换条件的结果返回不同类型的方法。我无法根据情况获得不同的返回类型。

public Object callCommonMethod(char key, Customer customer)
throws SFWException, ServiceException, CloneNotSupportedException {

switch (key) {

case 'C':
performGetCDBProfile(customer.getWizardNum());
dbData=true;
break;

case 'U':
performUpdate(cdbProfileInfo);
break;

case 'D':
updateCDBProfile(cdbProfileInfo);
break;

case 'W':
updateWebProfile(customer);
break;

case 'M':
ObjectMappingService.mapInfoToEDO(cdbProfileInfo);
break;
}
return customer;
}

如何实现 performGetCDBProfile(customer.getWizardNum()); 返回 cdbProfileInfo objperformUpdate(cdbProfileInfo); >updateCDBProfile(cdbProfileInfo); 是没有返回类型的方法,updateWebProfile(customer); 返回客户对象。

最佳答案

方法只能声明为返回一种类型。您可以返回不同的子类型,但编译器只会在编译时知道您正在返回声明的基类。

通常,如果您的子类型密切相关,并且您的调用代码可以对任一类型执行操作,而无需知道您的实际类型是什么(这是多态性的本质),那么这不是问题,例如

Vehicle v = getBusOrCar();
v.drive();

如果你不能做一些像上面这样有用的事情(例如,你要返回一个对象,因为这是最常见的基本类型),那么对我来说这就是代码味道。你的方法正在做两种不同的事情吗?

如果您想选择返回某些内容或不返回任何内容,您始终可以返回您的对象(Customer 类型?)或 null,在收到/使用之前检查 null。另一种可能性是返回一个Optional容器,因此API指示您可能取回一个对象。

不管怎样,在我看来,也许你的方法有多种职责。也许您的 switch 语句应该针对每种情况将更多功能委托(delegate)给另一个方法/类,这样您就不需要返回一个对象并对其进行操作?

关于java - 如何根据 switch case 中的情况实现不同的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31963532/

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