方法可以根据操作 return 不同的数据类型吗?

Can a method return different data types depending on the action?

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

一样,一个方法可以return单一类型的单一值。

您至少有三种解决方法:

  • Return Object 类型的对象。调用方法尝试 instanceOf 多次以发现特定类型。
  • Return 一个更一般类型的对象,其实际具体类型是一个子class。这可能适用于 Animal 抽象 class 或与 DogCat 具体 class 的接口。但是对于您的 intString 场景并没有真正意义。
  • Return 一个自定义 class 的对象,定义了多个成员字段,其中除一个字段外均为空。

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

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

除了一个字段之外的所有字段都为空。

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

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

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