Javaでは、int.class
のようなプリミティブのためのクラスリテラルを持つことが有効です。これはJavaのauto boxing
機能が導入される前でも許可されましたか?実際に入っているのはint.class
のオブジェクトですか?なぜそれは有効ですか?Javaのint.classには何が入っていますか?それはなぜ有効なのでしょうか?
6
A
答えて
3
int
はクラスではないので、int.class
は実際には意味がありません。
理由は安くなっており、いずれもタイプを表すためにClass
を使用しています。たとえば、Method.getReturnType()
は、実際にクラス、プリミティブ、配列、またはvoidを表す可能性があるClass
を返します。
あまりにも多くの種類の型がなかったので、それはジェネリックの前にうまくいきました。ジェネリックスの後、物事は本当に乱雑になる、新しいType
階層は、あまり古くなったので、あまり意味がありませんClass
;その結果、Types
のツリーは、言語仕様のタイプのツリーのように見えません。
3
はい、これは反射の重要な部分です(たとえば、int
パラメータを取る方法を記述する)。 Void
クラスもあります。