从作为参数传递的给定类型创建新对象

时间:2016-01-29 02:16:36

标签: java

我想在Java中创建一个方法:当我传递任何一个Class类型的参数时,它创建一个新类型的List,就像生成一个动态列表一样,然后用任何其他方法填充这个列表(不太重要了)最后,返回此列表填充了此类类型的元素(强制转换列表)。 我想在这个例子中实现更多的东西:

public List<fooClass> returnResultsList(Class fooClass) {
     List<fooClass> newList = new ArrayList<fooClass>();
     newList = fillWithResults(); // Pretty sure elements added here are fooClass type.
     return (List<fooClass>) newList;
}

我不知道是否必须使用反射。 我尝试过像List<fooClass.class> ....这样的事情 或List<instanceof(fooClass)> ....List<typeof(fooClass)>List<fooClass.newInstace()> 没有成功和许多编译器错误:(


编辑1:
方法fillWithResults()返回一个java.util.List对象,因此可以将其强制转换为任何类型或类。 事实上,我并不太关心如何填写此列表。问题的关键是如何创建作为参数传递的Class类型的新对象。


编辑2:
我已经实现了这样的事情,没有编译器错误,但我不确定它是否有效:

public <T> List<T> returnResultsList(Class<T> fooClass) {
    List<T> newList = new ArrayList<T>();
    newList = (List<T>) this.fillWithResults();
    // Do something else...
    return newList;
}

任何帮助或解释都将不胜感激。

提前致谢!!!

1 个答案:

答案 0 :(得分:0)

要从类对象创建类的实例,必须使用反射

fooClass.newInstance();
Constructor<?>[] constructors   = fooClass.getConstructors();
Class<?>[]       parameterTypes = constructors[ 0 ].getParameterTypes();
constructors[0].newInstance(/*parameters*/);

如果你只是做基本的构造函数,那么这很容易,如果你使用参数,这会非常快速地变得非常复杂。