Java 如何创建一个通用方法,该方法根据T的不同而不同?

Java 如何创建一个通用方法,该方法根据T的不同而不同?,java,generics,integer,biginteger,Java,Generics,Integer,Biginteger,创建泛型方法的最佳方法是什么,该方法根据给定的类型而不同,而不使用if语句来检查它是什么类型 例如,如果T是Integer和x.Add(y)如果T是biginger,如何创建返回x+y的Add(tx,tyy)方法,不检查T的类是否为BigInteger。泛型类型参数没有此类功能 您可能正在寻找方法重载:Java允许您创建具有相同名称的多个方法,只要它们具有不同的参数类型(和/或不同数量的参数)。因此,您可以使用以下不同的实现编写两个或多个方法: public Integer add(Intege

创建泛型方法的最佳方法是什么,该方法根据给定的类型而不同,而不使用if语句来检查它是什么类型


例如,如果
T
Integer
x.Add(y)
如果
T
biginger
,如何创建返回
x+y
Add(tx,tyy)
方法,不检查
T
的类是否为
BigInteger

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

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

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

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

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

对于泛型类型参数没有此类功能

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

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

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

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

add(tx,ty)
作为一个接口,并为每种类型提供不同的实现。您需要提供实现所需操作的内容,例如,
二进制操作
。这不是泛型的用例。无论类型如何,泛型方法都会做同样的事情(至少在高层)。更新:我不使用方法重载或接口实现的原因是我正在使用的类型是由用户输入定义的,因此在编译阶段我不知道它。请告诉我,如果我错了,这些方法可以在这种情况下使用,或者如果有其他方法可以考虑。你个人会怎么做?将
添加(tx,ty)
作为一个接口,并为每种类型提供不同的实现。你需要提供一些实现你想要的操作的东西,例如
二进制操作
。这不是泛型的用例。无论类型如何,泛型方法都会做同样的事情(至少在高层)。更新:我不使用方法重载或接口实现的原因是我正在使用的类型是由用户输入定义的,因此在编译阶段我不知道它。请告诉我,如果我错了,这些方法可以在这种情况下使用,或者如果有其他方法可以考虑。你个人会怎么做?好建议!一件事:重命名第二个参数(在每个方法中)。@seelenvirtuoseops,修复。也更改了返回类型,因为这样做更有意义。我很想这样做,但问题是我需要一个泛型方法,因为我使用的类取决于用户的输入。好建议!一件事:重命名第二个参数(在每个方法中)。@seelenvirtuoseops,修复。也更改了返回类型,因为这样做更有意义。我很想这样做,但问题是我需要一个泛型方法,因为我使用的类依赖于用户的输入。