Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式设置列表标识符_Java_Android_List_Identifier - Fatal编程技术网

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

Java 以编程方式设置列表标识符,java,android,list,identifier,Java,Android,List,Identifier,java类包含一个实例变量,它是一个列表。 我需要设置此列表在字符串变量中保存的对象类型 私有列表myList; 字符串变量=“BasicDegreeClass” JAVA是否允许这样做?如果允许,如何实现 提前感谢您只能使用类而不是基本类型或其值创建列表 例如:- List<Integer> a = new ArrayList<>(); List<YourObject> obj = new ArrayList<>(); List a=new

java类包含一个实例变量,它是一个
列表
。 我需要设置此
列表
字符串
变量中保存的对象类型

私有列表myList;
字符串变量=“BasicDegreeClass”

JAVA是否允许这样做?如果允许,如何实现


提前感谢

您只能使用
而不是
基本类型
或其值创建
列表

例如:-

List<Integer> a =  new ArrayList<>();
List<YourObject> obj = new ArrayList<>();
List a=new ArrayList();
List obj=new ArrayList();
但是如果您尝试使用
基元类型
,那么您将得到


最好使用这样的泛型

私有列表myList


但是,可以使用字符串来表示类名或充当唯一标识符,如果您自己也支持这一点,则首先必须创建一个列表,其中T是列表中包含的对象类型

因此,您的代码应该读为

私有列表myList

从javadoc

此列表中元素的类型。

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

不过,您可以使用
List
作为替代,但从长远来看,这通常是一种代码味道,很难维护

  • 它扼杀了泛型的概念
  • 使您的代码容易发生ClassCastException
  • 在一个完美的世界里,即使你在添加元素时很安全, 您将需要在任何地方抑制警告,并需要回退到 类型
正确的解决方案:您可以编写一个接口,ArrayList的所有对象都将遵循该接口。继续做类似的事情

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

不确定你的情况到底是什么。这样行吗<代码>类测试{List List;}
是的,这就是我在上面所做的。使用泛型类型。不确定你的要求是什么,但你最好使用。或者您可以使用类似于
String variableType=myList.get(index.class.getName()
的内容。但请确保列表已初始化(非null)且不为空,并且请注意,永远不要使用大写标识符名称声明包私有变量。很高兴听到@NiazAhsan:)
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));