public void foo(Class<? extends Number> value) {
// compilation error
processNumber(value);
}
public void processNumber(Number num) {
// do something about this number.
}
I would like to call “foo” from any subtype of Number (Integer, Double ..etc)
Can anyone explain to me how should I do it ?
foo(new Integer(5)); // compilation error
You are passing a
Classobject as a value butprocessNumbertakes aNumber.You can use this signature:
to be able to pass any kind of
Numberintofoobut keep in mind the Liskov Substitution Principle.As a side note: you don’t need
foo(new Integer(5));you can do this instead:foo(5);