简体   繁体   English

从Object获取ArrayList

[英]Get ArrayList from Object

I have one method that returns an object with two arraylists: 我有一个方法返回一个带有两个arraylists的对象:

return new Object[] {work, play};

I am trying to get them back out in another method. 我试图用另一种方法让它们退出。 I have tried casting to ArrayList but I get the error 'array required, but java.lang.Object found'. 我已经尝试转换为ArrayList但我得到错误'数组需要,但发现了java.lang.Object'。

ArrayList setWork = (ArrayList)obj[0];
ArrayList setPlay = (ArrayList)obj[1];

Full code for ArrayList creation: ArrayList创建的完整代码:

public static Object[] getWorkandPlay(ArrayList al) {

    ArrayList work = new ArrayList();
    ArrayList play = new ArrayList();

    for (int i=0; i<al.size(); i++){
        String item = (String) al.get(i);

        if (item.startsWith("w.")) {
            System.out.println("w " + item);
            work.add(item);
        } else if (item.startsWith("p.")) {
            System.out.println("p " + item);
            play.add(item);
        } else {
            System.out.println("Entries must start with either w. or p.\n");
        }
    }
    return new Object[] {work, play};
}

return new Object[] {work, play}; return new Object [] {work,play}; i think returns an array of object. 我认为返回一个对象数组。 Try ArrayList result = new ArrayList(); 尝试ArrayList result = new ArrayList(); put work andd play inside result then return result. 将工作和结果放在结果中然后返回结果。 Then 然后

In your calling code, you should set the reference type of obj as an Object array. 在您的调用代码中,您应该将obj的引用类型设置为Object数组。 You probably have Object obj = getWorkandPlay(anArrayList); 你可能有Object obj = getWorkandPlay(anArrayList); in your code. 在你的代码中。 Change it to Object[] obj = getWorkandPlay(anArrayList); 将其更改为Object[] obj = getWorkandPlay(anArrayList); .

I am doing something like this based on your code and it works... 我根据你的代码做这样的事情,它的工作原理......

class Test{
    public static Object[] getWorkandPlay(ArrayList al) {
        ArrayList work = new ArrayList();
        ArrayList play = new ArrayList();

        for (int i=0; i<al.size(); i++){
            String item = (String) al.get(i);

            if (item.startsWith("w.")) {
                System.out.println("w " + item);
                work.add(item);
            } else if (item.startsWith("p.")) {
                System.out.println("p " + item);
                play.add(item);
            } else {
                System.out.println("Entries must start with either w. or p.\n");
            }
        }
        return new Object[] {work, play};
    }
    public static void main(String[] args) {
        ArrayList<String> al=new ArrayList<>();
        al.add("w. test");
        al.add("p. test");
        Object[] obj=getWorkandPlay(al);
        ArrayList setWork = (ArrayList)obj[0];
        ArrayList setPlay = (ArrayList)obj[1];
    }
}

output 产量

w w. test
p p. test

You probably have a typo somewhere in your code. 您的代码中可能有某个拼写错误 This compiles for me: 这为我编译:

import java.util.*;

public class SampleClass {

    public static void main(String[] args) {
        // Create an ArrayList and add some sample Strings
        ArrayList al = new ArrayList();
        al.add("w. test");
        al.add("p. test");

        Object[] obj = getWorkandPlay(al);

        ArrayList setWork = (ArrayList)obj[0];
        ArrayList setPlay = (ArrayList)obj[1];
    }

    public static Object[] getWorkandPlay(ArrayList al) {
        ArrayList work = new ArrayList();
        ArrayList play = new ArrayList();

        for (int i=0; i<al.size(); i++){
            String item = (String) al.get(i);

            if (item.startsWith("w.")) {
                System.out.println("w " + item);
                work.add(item);
            } else if (item.startsWith("p.")) {
                System.out.println("p " + item);
                play.add(item);
            } else {
                System.out.println("Entries must start with either w. or p.\n");
            }
        }

        return new Object[] {work, play};
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM