我的程序中有2个列表;其中一个已有数据。我需要创建一个新的List并从之前的列表中传递一些数据。
以下是我使用的代码:
List<Class1> result = function();
List<Class2> newList = new ArrayList<Class2>();
for(int i=0; i < result.size(); i++) {
newList.get(i).setValue(result.get(i).getValue());
//setValue() is setter function in Class2
//getValue() is getter function in Class1
}
return newList;
当我尝试运行代码时,在此特定行中出现错误:
newList.get(i).setValue(result.get(i).getValue());
错误是:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
java.util.ArrayList.rangeCheck(ArrayList.java:635)
java.util.ArrayList.get(ArrayList.java:411)
如何解决此问题?需要一些帮助。
答案 0 :(得分:1)
我们假设您有一个名为obj1
和obj2
的变量。 obj1
是某个对象的实例。 obj2
为空。然后,将obj2
的变量设置为obj1
变量。你得到了什么? NullPointerException
因为obj2
为空。
要解决此问题,您必须创建一个对象。例如,在for
循环中(在newList.get(...)
方法之前)。您想复制对象或复制一些变量。为此,请在for
循环中执行此类操作。
newList.set( i, result.get(i) ); // if you want to copy the class
newList.set( i, new Class2(/* ... */) );
newList.get(i).setValue( result.get(i).getValue() ); // to copy variable
@Edit 只有在Class2
延伸Class1