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

kar*_*hul 2 java generics

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)

Ada*_*old 9

您将一个Class对象作为值传递但是processNumber需要一个Number.

您可以使用此签名:

public void foo(Number value)
Run Code Online (Sandbox Code Playgroud)

能够通过任何形式的Number进入foo,但要记住的里氏替换原则.

作为旁注:你不需要foo(new Integer(5));你可以这样做:foo(5);