public void foo(Class<? extends Number> value) {
// compilation error
processNumber(value);
}
public void processNumber(Number num) {
// do something about this number.
}
Run Code Online (Sandbox Code Playgroud)
我想从Number(Integer,Double ..etc)的任何子类型调用"foo".任何人都可以向我解释我该怎么办?
foo(new Integer(5)); // compilation error
Run Code Online (Sandbox Code Playgroud)
您将一个Class对象作为值传递但是processNumber需要一个Number.
您可以使用此签名:
public void foo(Number value)
Run Code Online (Sandbox Code Playgroud)
能够通过任何形式的Number进入foo,但要记住的里氏替换原则.
作为旁注:你不需要foo(new Integer(5));你可以这样做:foo(5);
| 归档时间: |
|
| 查看次数: |
334 次 |
| 最近记录: |