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

时间:2018-04-21 10:04:58

标签: java generics integer biginteger

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

例如,如果Add<T>(T x, T y)x + y,则如何创建T方法,Integer如果x.add(y)T,则BigInteger 1}},不检查T的类是否为BigInteger

1 个答案:

答案 0 :(得分:3)

泛型类型参数没有这样的功能。

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

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

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

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