一个Java类包含一个实例变量,该变量是List
。
我需要将此List
容纳在String
变量中的对象类型设置。
private List<VARIABLE> myList;
String VARIABLE = "BasicDegreeClass";
在JAVA中是否允许这样做?如何实现?
预先感谢
答案 0 :(得分:3)
首先,您必须创建一个列表,其中T是列表中包含的对象的类型。
因此,您的代码应读为
private List<T> myList;
在javadoc中,
<T> the type of elements in this list.
在您的情况下,编译器将不知道要添加到列表中的元素的类型,因此将无法正常工作。
但是您可以使用List<Object>
作为替代,但是从长远来看,这通常是一种代码气味,并且很难维护
适当的解决方案:您可以编写一个接口,ArrayList的所有对象都将遵循该接口。进行类似
的操作List<'YOUR INTERFACE TYPE HERE'> myList = new ArrayList<>();
您不必担心列表内的对象类型。希望这会有所帮助!
如果您太过具体而无法保存在String中,这是一种解决方法。
public static <T> List<T> getCastedList(List<Object> objList, Class<T> clazz) {
List<T> newList = new ArrayList<T>();
if (objList != null) {
for (Object object : objList) {
if (object != null && clazz.isAssignableFrom(object.getClass())) {
newList.add((T) object);
}
}
}
return newList;
}
并将其称为
getCastedList(myList, Class.forName(VARIABLE));
答案 1 :(得分:1)
答案 2 :(得分:0)