gpt4 book ai didi

java - 我们如何在原始类型上使用 .class?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:50:20 26 4
gpt4 key购买 nike

当我们说

Class c = Integer.class;
System.out.println(c);

它打印

class java.lang.Integer

这是有道理的,因为 java.lang.Integer是一个类。所以我们可以有一个对应的Class对象。

但是当我这样做的时候

Class c1 = int.class;
System.out.println(c1);

它打印int我觉得这有点模棱两可 .class返回 Class 类型的对象和 int不是类(而是原始类型)。

当不存在此类 (primitiveType.class.getName()) 时,允许对原始类型执行 .class 操作的动机是什么?

另外,如果您看到 toString( ) 类的方法 Class

public String toString() {
return (isInterface() ? "interface " : (isPrimitive() ? "" : "class "))
+ getName();
}

由于基本类型不是类或接口(interface),它只是打印名称( intint )。那么为什么允许创建 Class一个不存在的类的对象?

最佳答案

记录在 the javadoc 中:

The primitive Java types (boolean, byte, char, short, int, long, float, and double), and the keyword void are also represented as Class objects.

当您想通过反射调用需要原始参数的方法时,它特别有用。

想象一个方法:

class MyClass {
void m(int i) {}
}

您可以通过以下方式访问它:

MyClass.class.getDeclaredMethod("m", int.class);

关于java - 我们如何在原始类型上使用 .class?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19004293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com