如何解决一个方法可以根据操作返回不同的数据类型吗?
我想创建一个可以根据操作返回不同数据类型的方法。不幸的是,我无法包含真正的代码片段,但希望通过以下代码片段,您可以有所了解。基本上,我将这个方法称为具有不同参数的多种类型,并且根据情况它应该返回不同的类。在实际代码中,所有情况都有许多共同部分,只有细微的差别。我不想为每种情况创建不同的方法,而是想将它们全部收集在一起。
解决方法
作为 commented,一个方法只能返回单一类型的单个值。
您至少有三种解决方法:
- 返回一个
Object
类型的对象。调用方法多次尝试instanceOf
以发现特定类型。 - 返回一个更通用类型的对象,其实际的具体类型是一个子类。这可能适用于
Animal
抽象类或带有Dog
和Cat
具体类的接口。但对于您的int
与String
场景来说,这真的没有意义。 - 返回一个自定义类的对象,该对象定义了多个成员字段,除一个外,所有成员字段都为空。
通过新的 records 功能,Java 16 中的最后一个现在更容易。记录是声明类的一种更简洁的方式,其主要目的是透明和不可变地通信数据。编译器隐式创建构造函数、getter、equals
& hashCode
和 toString
。
public record FunkyMathResult( int number,String text ) {}
在除一个字段之外的所有字段都为空的情况下进行实例化。
return new FunkyMathResult( null,String.valueOf( a*b ) ) ;
然后调用方法检查每个字段以找到单独的非空值。
不推荐使用这些方法。您的情况通常是应用程序设计错误的标志,即“代码异味”。我建议您就您的实际问题领域咨询在面向对象设计方面有经验的人。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。