gpt4 book ai didi

java - 以编程方式设置列表标识符

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:34 25 4
gpt4 key购买 nike

一个 java 类包含一个实例变量,它是一个 List .我需要设置这个 List 的对象类型持有 String变量。

private List<VARIABLE> myList;
String VARIABLE = "BasicDegreeClass";

在 JAVA 中允许这样做吗?如果可以,如何实现?

提前致谢

最佳答案

首先,您必须创建一个列表,其中 T 是列表中包含的对象的类型。

所以,你的代码应该读作

private List<T> myList;

来自javadoc,

<T> the type of elements in this list.

在您的情况下,编译器不知道要添加到您的列表中的元素类型,因此它不会工作。

但是您可以使用 List<Object>作为替代方案,但从长远来看,这通常是一种代码味道,而且很难维护

  • 它扼杀了泛型的想法。
  • 使您的代码容易出现 ClassCastException。
  • 在一个完美的世界中,即使您在添加元素时是安全的,您将需要在所有地方禁止警告并需要返回类型。

正确的解决方案:您可以编写一个接口(interface),ArrayList 的所有对象都将遵守该接口(interface)。继续类似的事情

List<'YOUR INTERFACE TYPE HERE'> myList = new ArrayList<>();

你不需要担心列表中的对象类型。希望这对您有所帮助!

如果您过于具体而无法保存在字符串中,这里有一个解决方法。

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));

关于java - 以编程方式设置列表标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54069824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com