泛型类<! - ?扩展数字 - >解释

时间:2012-11-06 15:15:03

标签: java generics

public void foo(Class<? extends Number> value) {
    // compilation error
    processNumber(value);
}

public void processNumber(Number num) {
    // do something about this number.
}

我想从Number(Integer,Double ..etc)的任何子类型调用“foo” 任何人都可以向我解释我该怎么办?

foo(new Integer(5)); // compilation error 

1 个答案:

答案 0 :(得分:9)

您正在传递Class个对象作为值,但processNumber需要Number

您可以使用此签名:

public void foo(Number value)

能够将任何类型的Number传递到foo,但请记住Liskov Substitution Principle

作为旁注:您不需要foo(new Integer(5));,而是可以执行此操作:foo(5);