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

kar*_*rim 5 java class primitive-types

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

Class intClass = int.class;
Run Code Online (Sandbox Code Playgroud)

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

Sot*_*lis 7

作为Class类的javadoc 状态

该类的实例Class表示正在运行的Java应用程序中的类和接口.An 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

并且您希望add仅在给定其名称和参数类型的情况下调用该方法.以下将失败

Class<?> exampleClass = Example.class;
exampleClass.getMethod("add", Integer.class, Long.class);
Run Code Online (Sandbox Code Playgroud)

因为参数类型不是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);
Run Code Online (Sandbox Code Playgroud)