如何从ArrayList获取类实例?

Mik*_*ike 4 java

我是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);
                }
Run Code Online (Sandbox Code Playgroud)

gio*_*shc 8

只需使用铸造:

MyClass classInstance = (MyClass)myArray.get(0); 
Run Code Online (Sandbox Code Playgroud)

假设列表中的所有实例都是MyClass您可能获得的类型ClassCastException

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

List<MyClass> myList = new ArrayList<MyClass>(); 
for (MyClass classInstance : myList) {
     classInstance.doSomething();
}
Run Code Online (Sandbox Code Playgroud)

它所包含<>的类型指定了允许存储在列表中的对象类型,因此这种方式已经在编译时可以安全地使用列表成员而无需检查其类型.(可从J2SE 1.5+获得)

  • (从1.7:`List <MyClass> myList = new ArrayList <>();`.) (3认同)