1

2 つの配列リストを持つオブジェクトを返すメソッドが 1 つあります。

return new Object[] {work, play};

別の方法でそれらを取り戻そうとしています。ArrayList にキャストしようとしましたが、「配列が必要ですが、java.lang.Object が見つかりました」というエラーが表示されます。

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

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

4 に答える 4

1

新しいオブジェクトを返す[]{仕事、遊び}; オブジェクトの配列を返すと思います。ArrayListを試してくださいresult=new ArrayList(); 結果の中に作業と再生を入れて、結果を返します。それで

于 2012-06-02T00:09:17.530 に答える
1

呼び出し元のコードでは、objの参照型をオブジェクト配列として設定する必要があります。あなたはおそらく Object obj = getWorkandPlay(anArrayList);あなたのコードにあります。に変更しObject[] obj = getWorkandPlay(anArrayList);ます。

于 2012-06-02T00:15:05.747 に答える
1

私はあなたのコードに基づいてこのようなことをしていますが、うまくいきます...

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];
    }
}

出力

w w. test
p p. test
于 2012-06-02T00:19:53.177 に答える
1

コードのどこかにタイプミスがある可能性があります。これは私のためにコンパイルされます:

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};
    }
}
于 2012-06-02T00:20:15.820 に答える