java - 方法能否根据操作返回不同的数据类型?
问题描述
我想创建一个可以根据操作返回不同数据类型的方法。不幸的是,我无法包含真实的代码片段,但希望通过下面的代码片段,您可以有所了解。基本上,我将此方法称为具有不同参数的许多类型,并且根据情况它应该返回不同的类。在真实的代码中,所有的情况都有很多共同的部分,只有很小的不同。我不想为每种情况创建不同的方法,而是想将它们全部收集在一起。
解决方案
正如所评论的,一个方法只能返回单一类型的单一值。
您至少有三个三种解决方法:
- 返回一个类型的对象
Object
。调用方法instanceOf
多次尝试发现特定类型。 - 返回更通用类型的对象,其实际具体类型是子类。这可能适用于
Animal
抽象类或带有具体类的接口之Dog
类Cat
的东西。int
但是对于您的vsString
场景并没有真正意义。 - 返回一个自定义类的对象,该对象定义有多个成员字段,除了一个之外,其他所有成员字段都为空。
最后一个现在在 Java 16 中使用新的记录功能更容易了。记录是声明类的一种更简洁的方式,其主要目的是透明和不可变地传递数据。编译器隐式创建构造函数、getter、equals
&hashCode
和toString
。
public record FunkyMathResult( int number , String text ) {}
实例化除一个字段外的所有字段为空。
return new FunkyMathResult( null , String.valueOf( a*b ) ) ;
然后调用方法检查每个字段以找到唯一的非空值。
不推荐使用这些方法。您的情况通常表明您的应用程序设计错误,即“代码异味”。我建议您就您的实际问题领域咨询面向对象设计经验的人。
推荐阅读
- java - 为什么我在 Java 中得到不同的加法和错误
- flutter - 将 firestore 数据下载到 Flutter List
- powershell - 使用循环和输出创建 CSV
- typescript - 使用 node js 下载文件
- python - 如何访问websocket函数之外的变量
- javascript - 当我单击按钮时,值未在 js 中发送?
- python - 球卡在屏幕边缘
- api - 从没有 API 服务的网站中提取(或获取、抓取或获取)数据
- python - 仅删除已安装的应用程序然后删除 Django 中的文件夹是否安全?
- javascript - 单击按钮时如何动态显示内容