2012-06-02 176 views
1

ArrayList中我有一个方法,有两个的ArrayList返回一个对象:获取从对象

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}; 
} 
+0

你为什么要返回'ArrayList'内的一个'对象'数组? –

+0

你可以通过声明并创建工作和播放的代码吗? –

+0

从错误,它看起来像obj是一个对象,而不是对象数组。 – RedGreasel

回答

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 
+0

我将此应用于我的代码考虑了其他方法,它的工作原理。谢谢。 –

1

返回新对象[] {工作,娱乐};我想返回一个对象数组。尝试ArrayList result = new ArrayList(); 把工作和玩耍放在结果里然后返回结果。然后

1

在您的调用代码中,应该将obj的引用类型设置为Object数组。 您的代码中可能有 Object obj = getWorkandPlay(anArrayList);。将其更改为Object[] obj = getWorkandPlay(anArrayList);

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