我是Java新手,我正在使用的代码主要不是我自己的代码,所以请耐心等待...
我有一个包含几十个同一类实例的arraylist,我想从中依次提取一些变量的值。
我已经创建了一个迭代器并且可以在arraylist上愉快地迭代,当我尝试提取类实例时问题就出现了。使用.get(index)返回一个Object,我不知道如何将Object转换为类类型,以便访问变量或以自己的类型提取实例。
有人可以建议如何解决这个问题吗?
提前致谢。
编辑:抱歉,我应该在第一个实例中包含代码。
ArrayList TopicResults = results.getTopicResults(TopicNum);
ListIterator TopicResultsiter = TopicResults.listIterator();
while(TopicResultsiter.hasNext()){
int idx = TopicResultsiter.nextIndex();
ResultsList.Result result = TopicResults.get(idx);
String DocID = result.docID;
System.out.println(DocID);
}
答案 0 :(得分:8)
只需使用演员:
MyClass classInstance = (MyClass)myArray.get(0);
假设列表中的所有实例都属于MyClass
类型,否则您可能会获得ClassCastException
使用泛型迭代应该更容易,更安全:
List<MyClass> myList = new ArrayList<MyClass>();
for (MyClass classInstance : myList) {
classInstance.doSomething();
}
<>
所包含的类型指定了允许存储在列表中的对象类型,因此这种方式已经在编译时可以安全地使用列表成员而无需检查其类型。 (可从J2SE 1.5 +获得)
答案 1 :(得分:1)
MyType object = (MyType) list.get(index);
答案 2 :(得分:1)
您可以将ArrayList的“get”方法返回的对象直接分配给与ArrayList相同类型的属性。
例如,如果您有
ArrayList<MyType> myList;
只需使用
MyType myObjectf = myList.get(0);
...应该没有明确的类型转换