我有一个方法返回一个带有两个arraylists的对象:
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 :(得分:1)
return new Object [] {work,play};我认为返回一个对象数组。尝试ArrayList result = new ArrayList(); 将工作和结果放在结果中然后返回结果。然后
答案 1 :(得分:1)
在您的调用代码中,您应该将obj的引用类型设置为Object数组。
你可能有
代码中的Object obj = getWorkandPlay(anArrayList);
。将其更改为Object[] obj = getWorkandPlay(anArrayList);
。
答案 2 :(得分: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
答案 3 :(得分: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};
}
}