可以从作为参数传递的Class创建对象吗?

时间:2011-07-21 18:29:36

标签: java class

我做了一个接收类和int的方法。我想知道是否可以以及如何从传递的Class参数创建对象。

public void createObject(Class clazz, int n){
    for(int i=0;i<n;i++){
        //new object from the clazz
    }
}

可以这样做吗?我将创建te对象以在线程中运行。

如何确保Class实现Callable?

编辑:可以用参数调用Construcor吗?

5 个答案:

答案 0 :(得分:4)

你的意思是这样吗?

if(Callable.class.isAssignableFrom(clazz)) {
    Callable obj = (Callable) clazz.newInstance();

} else if (MyAbstractClass.class.isAssignableFrom(clazz)) {
    MyAbstractClass obj = (MyAbstractClass) clazz.newInstance();

} else {
    throw new IllegalArgumentException(clazz+" not valid");
}

如果你有一个带参数的构造函数,你可以做

Callable obj = (Callable) clazz.getConstructor(int.class).newInstance(10);

答案 1 :(得分:3)

  1. Peter很好地回答了第一个问题。
  2. public void createObject(Class&lt;?extends Callable&gt; clazz,int n){

答案 2 :(得分:1)

    if (!Callable.class.isAssignableFrom(clazz)) {
        // whatever error condition
    }
    Callable callable = (Callable) clazz.newInstance();

答案 3 :(得分:0)

这个method将帮助您检查传递的类是否实现接口/扩展类。

答案 4 :(得分:0)