Java 有没有办法用泛型检查使用的变量类型?
以这个伪代码为例:Java 有没有办法用泛型检查使用的变量类型?,java,variables,generics,Java,Variables,Generics,以这个伪代码为例: public static<T> int findNumber(T xNumber, double a, int b){ if (xNumber == int) { // do something... return some number... } else { return null; } 有没有一种方法可以在实际运行的Java代码中表达这一点 您不能使用Java代码来表示这种特定情况 你可以找到原因
public static<T> int findNumber(T xNumber, double a, int b){
if (xNumber == int) {
// do something... return some number...
} else {
return null;
}
有没有一种方法可以在实际运行的Java代码中表达这一点 您不能使用Java代码来表示这种特定情况 你可以找到原因 但是,如果希望将泛型与整数一起使用,Java类支持泛型。它还实现本机int使用的所有基本操作+-*/%。在您的示例中,您可以使用:
if (xNumber instanceof Integer)
平分
if (xNumber.getClass() == Integer.getClass())
正如@Stultuske在评论中所建议的那样
编辑:关于你的课程设计的评论也是非常真实的。您可能需要重新设计代码,这样就不必检查泛型对象的类型,特别是因为您正在检查单个类类型。该类几乎隐藏了,但非常有用
public static <T extends Number> int findNumber(...)
... xNumber.intValue() // longValue(), doubleValue()
if (xNumber instanceof Integer) ...
由于类型擦除的原因,执行更多操作是不可行的。instanceof。。。o、 getClass==Integer.getClass。。正如您所理解的:int是一个原语,所以它不起作用。如果您需要检查泛型对象的类型,这意味着我们的设计有问题。同意@user902383。如果您需要对T泛型定义进行更多的控制,请考虑在方法中设置限制,您可能根本不需要泛型,用编号。和of=荷兰语表示或;。。。一个月后,我明白了,谢谢!