static <T extends Number&Comparable >
我有一个静态方法跟随类:
public class Helper { public static <T extends Number & Comparable> Boolean inRange(T value, T minRange, T maxRange) { // equivalent (value >= minRange && value = 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不能应用于给定的类型; required:T,T,T found:java.lang.Integer,java.lang.Integer,java.lang.Integer reason:推断类型不符合推断的声明边界:java.lang.Integer bound(s) :java.lang.Number,java.lang.Comparable
有任何想法吗?
谢谢。
尝试
。
例如, Integer
实现Comparable
,它与Comparable super Number>
不兼容Comparable super Number>
Comparable super Number>
(整数不是Number的超类)。 Comparable extends Number>
Comparable extends Number>
也不会工作,因为Java会考虑?
可以是Number
任何子类,并且将T
传递给compareTo
则不会编译,因为它期望参数为?
而不是T
编辑:正如newacct所说,
也会起作用(稍微更一般),那么compareTo
会接受?
其中T
是子类,并且像往常一样,子类的实例可以作为期望超类的参数给出。
- 尽管Java的类型擦除,但获得T.class
- 重构Java数组和原语(double )到集合和generics(List <List >)
- Java Generics,如何在使用类层次结构时避免未经检查的赋值警告?
- Generic Generics:“令牌上的语法错误”扩展“,预期”
- 名称冲突:类型为test2的方法add(Object)与类型为HashSet 的add(E)具有相同的擦除,但不会覆盖它
- 为什么Guava的TypeToken .getRawType()返回Class 而不是Class
- 为什么这不编译:List <List > lss = new ArrayList <ArrayList >();
- 通用参数的Singleton Bean实例
- 如何获得generics的类