如何根据T创建不同行为的泛型方法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何根据T创建不同行为的泛型方法?相关的知识,希望对你有一定的参考价值。

创建一个根据给定类型采取不同行为的泛型方法的最佳方法是什么,而不使用if语句来检查它是什么类型的?

例如,如果Add<T>(T x, T y)x + yT如果Integerx.add(y),那么如何创建一个返回TBigInteger方法,而不检查T的类是否是BigInteger

答案

泛型类型参数没有此类功能。

您可能正在寻找方法重载:Java允许您创建具有相同名称的多个方法,只要它们具有不同的参数类型(和/或不同数量的参数)。所以你可以用不同的实现编写两个或更多的方法,如下所示:

public Integer add(Integer i, Integer j) {
    // do stuff
}

public BigInteger add(BigInteger i, BigInteger j) {
    // do other stuff
}

当你调用add时,编译器将通过检查你传递的参数的类型来决定选择哪些方法。

以上是关于如何根据T创建不同行为的泛型方法?的主要内容,如果未能解决你的问题,请参考以下文章

请教关于java的泛型方法

JAVA中的泛型用法一种: <T> 返回值用法。

Java中的泛型

javaSE21/9/20

java中的泛型

Java:泛型参数上带有.class的泛型方法[重复]