创建一个根据给定类型采取不同行为的泛型方法的最佳方法是什么,而不使用if语句检查哪种类型?
例如,如果Add<T>(T x, T y)
为x + y
,则如何创建T
方法,Integer
如果x.add(y)
为T
,则BigInteger
1}},不检查T
的类是否为BigInteger
。
答案 0 :(得分:3)
泛型类型参数没有这样的功能。
您可能正在寻找方法重载:Java允许您创建具有相同名称的多个方法,只要它们具有不同的参数类型(和/或不同数量的参数)。因此,您可以使用不同的实现编写两个或更多方法,如下所示:
public Integer add(Integer i, Integer j) {
// do stuff
}
public BigInteger add(BigInteger i, BigInteger j) {
// do other stuff
}
当您调用add
时,编译器将通过检查您传递的参数类型来决定选择哪种方法。