我想在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;
}
任何帮助或解释都将不胜感激。
提前致谢!!!
答案 0 :(得分:0)
要从类对象创建类的实例,必须使用反射
fooClass.newInstance();
Constructor<?>[] constructors = fooClass.getConstructors();
Class<?>[] parameterTypes = constructors[ 0 ].getParameterTypes();
constructors[0].newInstance(/*parameters*/);
如果你只是做基本的构造函数,那么这很容易,如果你使用参数,这会非常快速地变得非常复杂。