首页 > 解决方案 > 方法能否根据操作返回不同的数据类型?

问题描述

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

在此处输入图像描述

标签: javagenericsmethodscomputer-science

解决方案


正如所评论的,一个方法只能返回单一类型的单一值。

您至少有三个三种解决方法:

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

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

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

实例化除一个字段外的所有字段为空。

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

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

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


推荐阅读