メソッドが返される理由は何ですか?Class<? extends |X|>
を理解しようとしましたか?よりgetClassがClass <?を返すのはなぜですか? extends | X |>?
public final native Class<?> getClass();
openjdk周辺:
実際の結果型は
Class<? extends |X|>
|X|
がgetClass
が呼び出された 式の静的タイプの消去ある あります。
なぜgetClass
は、例えば、XClass.class
と同じ型を持つことはできません。
class Foo {}
Foo fooInstance = new Foo();
Class<Foo> fc = Foo.class; // Works!
Class<Foo> fc2 = fooInstance.getClass(); // Type mismatch ;(
Class<?> fc3 = fooInstance.getClass(); // Works!
Class<? extends Foo> fc4 = fooInstance.getClass(); // Works!
関連します。http:// stackoverflow.com/questions/19332856/what-is-meant-by-the-erasure-of-the-static-type-of-the-expression-on-which-it-i and http://stackoverflow.com/質問/ 18144556/java-getclass-of-bounded-type – Tunaki