static >

2024-03-21

我有以下带有一个静态方法的类:

public class Helper {

    public static <T extends Number & Comparable<? super Number>> Boolean inRange(T value, T minRange, T maxRange) {
        //  equivalent (value >= minRange && value <= maxRange)
        if (value.compareTo(minRange) >= 0 && value.compareTo(maxRange) <= 0)
            return true;
        else
            return false;
    }

}

我尝试调用这个方法:

Integer value = 2;
Integer min = 3;
Integer max = 8;
Helper.inRange(value, min, max) ;

Netbeans 编译器向我显示以下错误消息:

Helper 类中的方法 inRange 不能应用于给定类型; 必填:T,T,T 找到:java.lang.Integer、java.lang.Integer、java.lang.Integer 原因:推断的类型不符合声明的边界 推断:java.lang.Integer 绑定:java.lang.Number,java.lang.Comparable

有任何想法吗?

thanks.


Try <T extends Number & Comparable<T>>.

E.g. Integer实施Comparable<Integer>,这不兼容Comparable<? super Number>(Integer 不是 Number 的超类)。Comparable<? extends Number>也不会工作,因为 Java 会认为?可以是任何子类Number,并通过T to compareTo然后将无法编译,因为它需要一个参数?, not T.

Edit:正如 newacct 所说,<T extends Number & Comparable<? super T>>从那时起也将起作用(并且稍微更通用)compareTo然后将接受任何?其中T是一个子类,并且像往常一样,可以将子类的实例作为需要超类的参数给出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

static > 的相关文章

随机推荐