use*_*123 32 java reflection primitive
有什么区别Integer.class,Integer.TYPE和int.class?
适合我
Integer.class 是Integer(Wrapper)类对象的引用int.class的int不是一类,这是一个基本类型.那Integer.TYPE指的是什么?ysh*_*vit 29
Integer.class就像你说的那样,是Class对该Integer类型的对象的引用.
int.class是,相似性,Class对int类型的对象的引用.你是对的,这听起来不对; 原语都有一个Class对象作为特例.如果你想区分foo(Integer value)和之间的区别,它对于反射是有用的foo(int value).
Integer.TYPE(不Integer.type,记住你)只是一个捷径int.class.
您可以通过一个简单的程序了解这一点:
public class IntClasses {
public static void main(String[] args) {
Class<Integer> a = int.class;
Class<Integer> b = Integer.TYPE;
Class<Integer> c = Integer.class;
System.out.println(System.identityHashCode(a));
System.out.println(System.identityHashCode(b));
System.out.println(System.identityHashCode(c));
}
}
Run Code Online (Sandbox Code Playgroud)
示例输出(每次都会有所不同,但前两个将始终相同,第三个几乎总是不同):
366712642
366712642
1829164700
Run Code Online (Sandbox Code Playgroud)
Evg*_*eev 22
来自java.lang.Class.isPrimitiveAPI
有九个预定义的Class对象来表示八种基本类型和void.它们由Java虚拟机创建,并且与它们表示的基本类型具有相同的名称,即boolean,byte,char,short,int,long,float和double.
这些对象仅能通过下列公共静态最终变量来访问java.lang.Boolean.TYPE,java.lang.Integer.TYPE等等