Sta*_*nko 0 java generics extends interface
整数扩展数字,为什么我在底部得到错误?
interface Predicate<T> {
public abstract boolean check(T t);
}
Predicate<? extends Number> predUpper = null;
predUpper.check(new Integer(73));
Run Code Online (Sandbox Code Playgroud)
错误:谓词类型中的方法检查(捕获#6-of?extends Number)不适用于参数(整数)
我读过:类型Map <String中的方法,捕获#1-of?extends Object>不适用和<?超级T>和<?在Java中扩展T>
由于Predicate会消耗的Integer,你应该做的:
Predicate<? super Integer> predUpper //Solution 1
Run Code Online (Sandbox Code Playgroud)
要不就:
Predicate<Number> predUpper //Solution 2
Run Code Online (Sandbox Code Playgroud)
但是,这些方法有所不同:
<? super Integer"Solition 1"中的类型参数表示一整套超类型Integer(包括Integer).
<Number>"解决方案2"中的类型参数表示Number接口的子类.既然如此Integer,它就适用于此.
更多信息:
| 归档时间: |
|
| 查看次数: |
364 次 |
| 最近记录: |