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 回答