3

Java (7) について話すと、次のようなプリミティブ型のクラスを取得できます。

Class classOfInt = int.class

それぞれに対して、プリミティブ型として名前が付けられた「クラス」を取得します。

int.class    --> int
byte.class   --> byte
double.class --> double
...

ただし、これらのインスタンスを作成することはできません:

char.class.newInstance(); // throws 'InstantiationException'

それらのクラスは、対応するラッパー クラス ( 、 など) にマップされていないようIntegerですByte

では、なぜ「クラス」があり、どのように使用され、どのように実装されるのでしょうか?

4

1 に答える 1

6

それらは反射で使用されます。

Method round = Math.class.getMethod("round", double.class);
System.out.println(Arrays.toString(round.getParameterTypes()));
System.out.println(round.getReturnType() == long.class);

Method exit = System.class.getMethod("exit", int.class);
System.out.println(Arrays.toString(exit.getParameterTypes()));
System.out.println(exit.getReturnType() == void.class);

プリント

[double]
true
[int]
true

それらはどのように実装されていますか?

それらはJVMに組み込まれており、それらを定義するためのクラスファイルはありません。

于 2012-11-16T14:12:40.600 に答える