访问表示基本类型的调用对象

时间:2015-08-02 19:47:36

标签: java class primitive-types

我已经读过为了访问表示基本类型的调用对象,我可以这样做:

Class intClass = int.class;

但原始类型如何使用类来表示它们?它们是原始的,这应该意味着它们没有阶级。为什么上面的例子工作,哪个类包含int(可能是整数类)?

3 个答案:

答案 0 :(得分:7)

由于Class类的javadoc状态

  

Class的实例表示一个类中的类和接口   运行Java应用程序。 enum是一种类和注释   是一种界面。每个数组也属于一个类   反映为Class对象,由具有相同的所有数组共享   元素类型和维数。 原始Java类型   (booleanbytecharshortintlongfloatdouble) ,和   关键字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);

因为参数类型不是IntegerLong,所以它们是intlong

您必须执行类似

的操作
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以获取更多信息,并查看每个原语的相应包装类。