Java 中的原始 类
Primitive classes in Java
像int.class
或double.class
这样的类有什么用
例如你不能做类似
的事情
Object val=getValue();
if(val instanceof int){
}
或
int i = new int();
是的,我知道这是不可能的,因为 int 不是 Object 类型。但是,有什么必要要那些原始的类呢?我在 Oracle documentation.
中没有看到任何对此的明确解释
它对反思很有用。
例如,如果您想使用 Class.getDeclaredMethod
来查找以 int
作为参数的方法,您可以这样做:
//Find the method foo(int)
Method theMethod = theClass.getDeclaredMethod("foo", int.class);
在Java中,X.class
是class文字的语法。当 X
是 class 或接口的名称时,表达式 X.class
计算为表示 class 或接口的 Class 对象type(引用类型)。
因为还有 Class 原始类型的对象(如 Nicholas 所述用于反射),为了保持一致性,他们扩展了语法 所以对于原始类型 X
,表达式 X.class
的计算结果也为表示该原始类型的 Class 对象。
#注意:对于所有原始类型,该值也可作为相应包装器class的静态字段TYPE
。所以 int.class
等同于 Integer.TYPE
.
像int.class
或double.class
例如你不能做类似
的事情 Object val=getValue();
if(val instanceof int){
}
或
int i = new int();
是的,我知道这是不可能的,因为 int 不是 Object 类型。但是,有什么必要要那些原始的类呢?我在 Oracle documentation.
中没有看到任何对此的明确解释它对反思很有用。
例如,如果您想使用 Class.getDeclaredMethod
来查找以 int
作为参数的方法,您可以这样做:
//Find the method foo(int)
Method theMethod = theClass.getDeclaredMethod("foo", int.class);
在Java中,X.class
是class文字的语法。当 X
是 class 或接口的名称时,表达式 X.class
计算为表示 class 或接口的 Class 对象type(引用类型)。
因为还有 Class 原始类型的对象(如 Nicholas 所述用于反射),为了保持一致性,他们扩展了语法 所以对于原始类型 X
,表达式 X.class
的计算结果也为表示该原始类型的 Class 对象。
#注意:对于所有原始类型,该值也可作为相应包装器class的静态字段TYPE
。所以 int.class
等同于 Integer.TYPE
.