方法可以根据操作 return 不同的数据类型吗?
Can a method return different data types depending on the action?
我想创建一个方法,可以根据操作 return 不同的数据类型。不幸的是,我无法包含真正的代码片段,但希望通过下面的代码片段,您可以有所了解。基本上,我将此方法称为许多具有不同参数的类型,并且根据情况它应该 return 不同 class。在实际代码中,所有情况都有许多共同部分,只有细微差别。我不想为每种情况创建不同的方法,而是想将它们全部收集起来。
与一样,一个方法可以return单一类型的单一值。
您至少有三种解决方法:
- Return
Object
类型的对象。调用方法尝试 instanceOf
多次以发现特定类型。
- Return 一个更一般类型的对象,其实际具体类型是一个子class。这可能适用于
Animal
抽象 class 或与 Dog
和 Cat
具体 class 的接口。但是对于您的 int
与 String
场景并没有真正意义。
- Return 一个自定义 class 的对象,定义了多个成员字段,其中除一个字段外均为空。
最后一个现在在 Java 16 中使用新的 records 功能更容易。记录是声明 class 的一种更简洁的方式,其主要目的是透明且不可变地传递数据。编译器隐式创建构造函数、getter、equals
& hashCode
和 toString
.
public record FunkyMathResult( int number , String text ) {}
除了一个字段之外的所有字段都为空。
return new FunkyMathResult( null , String.valueOf( a*b ) ) ;
调用方法然后检查每个字段以找到单独的非空值。
None 推荐这些方法。您的情况通常是应用程序设计错误的标志,即“代码味道”。我建议您就您的实际问题领域咨询在面向对象设计方面有经验的人。
我想创建一个方法,可以根据操作 return 不同的数据类型。不幸的是,我无法包含真正的代码片段,但希望通过下面的代码片段,您可以有所了解。基本上,我将此方法称为许多具有不同参数的类型,并且根据情况它应该 return 不同 class。在实际代码中,所有情况都有许多共同部分,只有细微差别。我不想为每种情况创建不同的方法,而是想将它们全部收集起来。
与
您至少有三种解决方法:
- Return
Object
类型的对象。调用方法尝试instanceOf
多次以发现特定类型。 - Return 一个更一般类型的对象,其实际具体类型是一个子class。这可能适用于
Animal
抽象 class 或与Dog
和Cat
具体 class 的接口。但是对于您的int
与String
场景并没有真正意义。 - Return 一个自定义 class 的对象,定义了多个成员字段,其中除一个字段外均为空。
最后一个现在在 Java 16 中使用新的 records 功能更容易。记录是声明 class 的一种更简洁的方式,其主要目的是透明且不可变地传递数据。编译器隐式创建构造函数、getter、equals
& hashCode
和 toString
.
public record FunkyMathResult( int number , String text ) {}
除了一个字段之外的所有字段都为空。
return new FunkyMathResult( null , String.valueOf( a*b ) ) ;
调用方法然后检查每个字段以找到单独的非空值。
None 推荐这些方法。您的情况通常是应用程序设计错误的标志,即“代码味道”。我建议您就您的实际问题领域咨询在面向对象设计方面有经验的人。