gpt4 book ai didi

java - 是否可以创建用户定义的 POJO 原语的新实例

转载 作者:行者123 更新时间:2023-12-01 14:38:58 25 4
gpt4 key购买 nike

我有课TestClass是否可以在运行时为此创建新实例?就像我们创建TestClass someObj = new TestClass(); also TestClass[] someObj = new TestClass();的方式一样对于 Java 原始类型也是如此。

是否可以通过反射(reflection),如果可以的话请用示例支持答案。

编辑:

import java.awt.Rectangle;

public class SampleNoArg {

public static void main(String[] args) {
Rectangle r = (Rectangle) createObject("java.awt.Rectangle");
System.out.println(r.toString());
}

static Object createObject(String className) {
Object object = null;
try {
Class classDefinition = Class.forName(className);
object = classDefinition.newInstance();
} catch (InstantiationException e) {
System.out.println(e);
} catch (IllegalAccessException e) {
System.out.println(e);
} catch (ClassNotFoundException e) {
System.out.println(e);
}
return object;
}
}

与上面相同,但我想创建一些对象数组。

最佳答案

您不能使用Class#newInstance用于实例化数组:

InstantiationException - if this Class represents an abstract class, an interface, an array class, a primitive type, or void; or if the class has no nullary constructor; or if the instantiation fails for some other reason.

这是一个可能的解决方法:

@SuppressWarnings("unchecked")
public static <T> T[] newArray(Class<T> clazz, int n) {
return (T[]) Array.newInstance(clazz, n);
}

关于java - 是否可以创建用户定义的 POJO 原语的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16188808/

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