Java 如何创建仅在类名中指定的泛型类型变量为整数时有效的方法
我有一个使用泛型类型参数的类。我想写一个只在类型参数为Integer时执行的方法 我得到这个问题的具体场景如下:我的任务是为一个AVLtree类编写一个方法range(),该类返回树的最小值和最大值之差。我试图返回Java 如何创建仅在类名中指定的泛型类型变量为整数时有效的方法,java,Java,我有一个使用泛型类型参数的类。我想写一个只在类型参数为Integer时执行的方法 我得到这个问题的具体场景如下:我的任务是为一个AVLtree类编写一个方法range(),该类返回树的最小值和最大值之差。我试图返回maxNode.getE()-minNode.getE(),但这给了我一个编译器错误 error: bad operand types for binary operator '-' return max.getE()-min.getE();
maxNode.getE()-minNode.getE()
,但这给了我一个编译器错误
error: bad operand types for binary operator '-'
return max.getE()-min.getE();
^
first type: E
second type: E
where E is a type-variable:
E extends Comparable<? super E> declared in class AVLtreeCC
您无法使用
instanceof
测试t
的类型,因为。如果实例方法只在类型参数只是所有有效类型参数子集中的一个子集时才起作用,那么这种方法充其量就是可疑的。如果您需要这样一个实例方法,那么通过声明适当的边界来强制T
兼容。使用一个只接受MyClass
实例的静态方法怎么样?与中一样,静态整数范围(MyClass obj){…}
。尽管关于Number
的所有其他子类型呢?静态方法是一个很好的主意,而且很有效。
class myClass<T>{
void foo(){
if(T instanceof Integer){
...
}
else{
System.out.println("T is not of the Integer class, so this method will not work");
};
}
}