我已经读过为了访问表示基本类型的调用对象,我可以这样做:
Class intClass = int.class;
但原始类型如何使用类来表示它们?它们是原始的,这应该意味着它们没有阶级。为什么上面的例子工作,哪个类包含int
(可能是整数类)?
答案 0 :(得分:7)
由于Class
类的javadoc状态
类
Class
的实例表示一个类中的类和接口 运行Java应用程序。enum
是一种类和注释 是一种界面。每个数组也属于一个类 反映为Class
对象,由具有相同的所有数组共享 元素类型和维数。 原始Java类型 (boolean
,byte
,char
,short
,int
,long
,float
和double
) ,和 关键字void
也表示为Class
个对象。
Class
对象只为它所代表的类型提供一些元数据和工厂方法。
例如,Class#isPrimitive()
将告诉您表示的类型是否为基元。
除了其他方面,类Class
及其实例用于反射。
让我们说你有像
这样的课程public class Example {
public long add(int first, long second) { // for whatever reason
return first + second;
}
}
并且您想调用add
方法,只给出其名称和参数类型。以下将失败
Class<?> exampleClass = Example.class;
exampleClass.getMethod("add", Integer.class, Long.class);
因为参数类型不是Integer
和Long
,所以它们是int
和long
。
您必须执行类似
的操作Class<Example> exampleClass = Example.class;
Method addMethod = exampleClass.getMethod("add", int.class, long.class);
Example instance = exampleClass.newInstance();
addMethod.invoke(instance, 42, 58L);
答案 1 :(得分:4)
如果查看grunt.template.process
类的字段摘要,您会发现基本类型Integer
实际上由类实例int
表示。因此,TYPE
将等于int.class
。
这是指向Javadocs的链接,您可以在其中找到Integer.TYPE
类实例。
答案 2 :(得分:0)
当您键入int.class
时,您将获得相应的对象包装类,每个基元都有。阅读Java tutorials on autoboxing以获取更多信息,并查看每个原语的相应包装类。