4

我是 Java 新手,我正在使用的代码很大程度上不是我自己的,所以请多多包涵……

我有一个包含同一个类的几十个实例的数组列表,我想从中依次提取一些变量的值。

我创建了一个迭代器,并且可以愉快地遍历数组列表,当我尝试提取类实例时问题就来了。使用 .get(index) 返回一个对象,我不知道如何将对象转换为类类型以访问变量或提取其自身类型的实例。

谁能建议如何解决这个问题?

提前致谢。

编辑:对不起,我应该在第一个实例中包含代码。

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

3 回答 3

8

只需使用铸造:

MyClass classInstance = (MyClass)myArray.get(0); 

假设列表中的所有实例都是类型,MyClass否则您可能会得到ClassCastException

使用泛型迭代应该更容易、更安全:

List<MyClass> myList = new ArrayList<MyClass>(); 
for (MyClass classInstance : myList) {
     classInstance.doSomething();
}

括起来的<>类型指定了允许存储在列表中的对象的类型,因此在编译时您就可以安全地使用列表成员,而无需检查它们的类型。(可从 J2SE 1.5+ 获得)

于 2013-02-18T15:46:19.907 回答
1

MyType object = (MyType) list.get(index);

于 2013-02-18T15:46:58.377 回答
1

您可以将 ArrayList 的“get”方法返回的对象直接分配给与 ArrayList 相同类型的属性。

例如,如果您有一个

ArrayList<MyType> myList;

只需使用

MyType myObjectf = myList.get(0);

...应该在没有显式类型转换的情况下工作

于 2013-02-18T15:49:46.140 回答