我最近学到JVM中有Class原始类型的表示。例如,
我不理解的是它们存在的原因。它们似乎没有任何功能作用。通过反射,我查找了这些类,它们没有构造函数、方法或字段。在所有情况下,它们似乎都是空的和无用的。原始类型变量甚至不是它们各自类的实例,如下面返回的结果为false:
所以它们为什么存在?它们一定有一些作用,可能是为了编译器或其他什么东西,但无论是什么都完全超出了我的能力范围。甚至在Integer API中明确引用了
int.class
,double.class
,甚至是void.class
。我不理解的是它们存在的原因。它们似乎没有任何功能作用。通过反射,我查找了这些类,它们没有构造函数、方法或字段。在所有情况下,它们似乎都是空的和无用的。原始类型变量甚至不是它们各自类的实例,如下面返回的结果为false:
int a = 3;
int.class.isInstance(a);
所以它们为什么存在?它们一定有一些作用,可能是为了编译器或其他什么东西,但无论是什么都完全超出了我的能力范围。甚至在Integer API中明确引用了
int.class
(对于每个基本类型及其相应的包装对象也是如此)。我甚至找不到任何关于它们存在的参考资料,更不用说它们的用途了,在JLS中也是如此。
int.class
和类似的东西对于反射 API 中的值非常有用,其中我们需要能够表示一个原始类型的返回类型或参数类型。请注意,我的答案甚至没有包含“编译器”这个词。 - Jon SkeetgetDeclaredMethod()
和getReturnType()
... - Jon Skeet