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

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

Number の任意のサブタイプ (Integer、Double など) から "foo" を呼び出したいのですが、どうすればよいか説明してもらえますか?

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

1 に答える 1

9

Classオブジェクトを値として渡しますが、processNumberを取りますNumber

この署名を使用できます。

public void foo(Number value)

Numberあらゆる種類のを渡すことができますが、リスコフの置換原則fooを覚えておいてください。

補足として:foo(new Integer(5));代わりにこれを行う必要はありません:foo(5);

于 2012-11-06T15:16:15.257 に答える