微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

一个方法可以根据操作返回不同的数据类型吗?

如何解决一个方法可以根据操作返回不同的数据类型吗?

我想创建一个可以根据操作返回不同数据类型的方法。不幸的是,我无法包含真正的代码片段,但希望通过以下代码片段,您可以有所了解。基本上,我将这个方法称为具有不同参数的多种类型,并且根据情况它应该返回不同的类。在实际代码中,所有情况都有许多共同部分,只有细微的差别。我不想为每种情况创建不同的方法,而是想将它们全部收集在一起。

enter image description here

解决方法

作为 commented,一个方法只能返回单一类型的单个值。

您至少有三种解决方法:

  • 返回一个 Object 类型的对象。调用方法多次尝试 instanceOf 以发现特定类型。
  • 返回一个更通用类型的对象,其实际的具体类型是一个子类。这可能适用于 Animal 抽象类或带有 DogCat 具体类的接口。但对于您的 intString 场景来说,这真的没有意义。
  • 返回一个自定义类的对象,该对象定义了多个成员字段,除一个外,所有成员字段都为空。

通过新的 records 功能,Java 16 中的最后一个现在更容易。记录是声明类的一种更简洁的方式,其主要目的是透明和不可变地通信数据。编译器隐式创建构造函数、getter、equals & hashCodetoString

public record FunkyMathResult( int number,String text ) {}

在除一个字段之外的所有字段都为空的情况下进行实例化。

return new FunkyMathResult( null,String.valueOf( a*b ) ) ;

然后调用方法检查每个字段以找到单独的非空值。

不推荐使用这些方法。您的情况通常是应用程序设计错误的标志,即“代码异味”。我建议您就您的实际问题领域咨询在面向对象设计方面有经验的人。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。