6

Bloch の効果的な Java から異種コンテナー パターンをチェックアウトしており、異種コンテナーにオブジェクトを挿入するときにクラス参照が必要な理由を判断しようとしています。instance.getClass()この参照を取得するために使用できませんか? JPAのエンティティマネージャーがその例ではないでしょうか?

interface BlochsHeterogeneousContainer {

    <T> void put(Class<T> clazz, T instance);

    <T> T get(Class<T> clazz);
}

interface AlternativeHeterogeneousContainer {

    // Class<T> not needed because we can use instance.getClass()
    <T> void put(T instance);

    <T> T get(Class<T> clazz);
}
4

2 に答える 2

5

いいえ、実際のオブジェクト型のクラスではなく、継承の場合に参照型のクラスが提供されないため、それはできません。

次の例を検討してください。

Number num = new Integer(4);
System.out.println(num.getClass());

これは印刷されます:

class java.lang.Integer

ではありませんjava.lang.Number

于 2013-08-07T16:42:47.610 に答える