我正在尝试创建一个通用类,该类将在Java中使用3个数字(在我的情况下为int,float和double)。
在此类中,我想要一个double方法,该方法将返回3的最大数量,但是由于它是泛型类,因此我很难返回一个double。
class Triple<T extends Comparable> {
T a;
T b;
T c;
public Triple(T a, T b, T c) {
this.a = a;
this.b = b;
this.c = c;
}
double max() {
if (a.compareTo(b) > 0 && a.compareTo(c) > 0) {
return (double) a;
} else {
if (b.compareTo(c) > 0) {
return (double) b;
} else {
return (double) c;
}
}
}
}
这是我到目前为止所拥有的,但是当用整数对其进行测试时,出现以下错误:
java.lang.ClassCastException:无法将java.lang.Integer强制转换为java.lang.Double
有关如何从泛型类返回原始类型的任何帮助?
只需返回T
而不是double
T max() {
if (a.compareTo(b) > 0 && a.compareTo(c) > 0) {
return a;
} else {
if (b.compareTo(c) > 0) {
return b;
} else {
return c;
}
}
}