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

问题描述 投票:0回答:1

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

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

java generics integer biginteger
1个回答
3
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.