1

次の Java クラスがあります。

class Model { // some model class }

class FooModel extends Model {}

class ModelWorker {
  public static <T extends Model> void do(Class<T> clazz) { /* ... */ }
}

なぜModelWorker.do()メソッドは可能ですFooModel.classが、可能ではないの
new FooModel().getClass()ですか?

4

1 に答える 1

2

ダミーコードが機能するはずです。ただし、明らかに単なる例であるため、実際のコードは少し異なると思います。

の仕様を参照してくださいObject.getClass

実際の結果の型はClass<? extends |X|>、が呼び出さ|X|れた式の静的型の消去です。getClass

返されることに注意してClass<?>ください。これは、次のようなことをすることを意味します

Object o = new FooModel();
ModelWorker._do(o.getClass());

...o.getClass()は単にClass<?>. このようなことをしていますか?

于 2012-08-17T07:16:45.093 に答える