gpt4 book ai didi

java - 如何为原始类型实例化 Class 类?

转载 作者:太空狗 更新时间:2023-10-29 22:39:43 24 4
gpt4 key购买 nike

我正在尝试这样做,但不起作用:

public static Class loadIt(String name) throws Throwable {
return Class.forName(name);
}
assert foo.loadIt("int") == int.class; // exception here

我应该如何正确执行此操作?

最佳答案

你不能,因为基元不是对象。

您目前正在尝试的还不是实例化——它正在加载一个类。但是你不能为原始人这样做。 int 确实是用于 int 类型的名称,无论何时获得它们的 Class 对象(通过反射,例如 method. getReturnType()),但是你不能用 forName() 加载它。

引用:Reflection tutorial :

If the fully-qualified name of a class is available, it is possible to get the corresponding Class using the static method Class.forName(). This cannot be used for primitive types

实例化原语的解决方案是使用 commons-lang ClassUtils,可以获取给定原语对应的包装类:

if (clazz.isPrimitive() {
clazz = ClassUtils.primitiveToWrapper(clazz);
}
clazz.newInstance();

请注意,这假设您拥有表示 int 类型的 Class - 通过反射或通过文字 (int.class)。但我无法理解拥有它的字符串表示形式的用例。您可以改用 forName("java.lang.Integer")

关于java - 如何为原始类型实例化 Class 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5032898/

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