java泛型类内部的double方法

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

我正在尝试创建一个通用类,该类将在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

有关如何从泛型类返回原始类型的任何帮助?

java generics casting double generic-programming
1个回答
0
投票

只需返回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;
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.