java - 创建传递的 Class.class 参数的新实例

标签 java oop class

假设我有一个函数,目的是创建任何指定类的新实例,然后返回它。也许是这样的:

public static <T> Class<T> forgeClass(Class<T> classReference) {

    return new classReference.getClass();

}

用法(使用 Employee 类):

Employee foo = forgeClass(Employee.class); // new Employee instance

我怎样才能做到这一点?

最佳答案

关键是要用Class.newInstance ;

public static <T> T forge(final Class<T> type)
    throws InstantiationException, IllegalAccessException {
  return type.newInstance();
}

使用如下...

final Employee employee = forge(Employee.class);

如果您想使用更复杂的初始化例程,例如Employee(String name),你应该使用Class.getConstructor , 其次是 Constructor.newInstance .

final Constructor ctor = Employee.class.getConstructor(String.class);
final Employee employee = ctor.newInstance("Steve");

关于java - 创建传递的 Class.class 参数的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12341711/

相关文章:

c++ - 包含自身列表的类

java - 在Java图片中查找图片?

java - 创建多线程并实例化可运行程序

python - python init 函数中 master 和 master=none 的用途是什么?

python - 实现抽象属性而不需要在 child 中重新定义 __init__

python - `__init__()` 总是引发错误

java - 如何在 Java 中使用第三方包

java - 字符串操作

java - Spring 启动,jdbcTemplate,Java

C#:解决继承类与其基类之间的无效转换异常