2012-07-27 81 views
15

我有一类这样的方法:Java返回数组列表的返回方法?

public ArrayList<Integer> myNumbers() { 
    ArrayList<Integer> numbers = new ArrayList<Integer>(); 
    numbers.add(5); 
    numbers.add(11); 
    numbers.add(3); 
    return(numbers); 
} 

我怎么能叫另一个类中这个方法?

回答

15

如果您要从调用这个方法的类,是在同一个包,然后创建该类的一个实例并调用该方法。

2.使用Composition

这将是最好有一个Generic ArrayListArrayList<Integer>等...

如:

public class Test{ 

public ArrayList<Integer> myNumbers() { 
    ArrayList<Integer> numbers = new ArrayList<Integer>(); 
    numbers.add(5); 
    numbers.add(11); 
    numbers.add(3); 
    return(numbers); 
} 
} 


public class T{ 


public static void main(String[] args){ 

    Test t = new Test(); 
    ArrayList<Integer> arr = t.myNumbers();  // You can catch the returned integer arraylist into an arraylist. 
} 


} 
+1

进一步被操纵我想你的意思'ARR = T .myNumbers();'? – npinti 2012-07-27 06:07:53

5

您需要实例化它所包含的类,或使该方法为静态。

所以,如果它包含类Foo中:

Foo x = new Foo(); 
List<Integer> stuff = x.myNumbers(); 

或可替代的简写:

List<Integer> stuff = new Foo().myNumbers(); 

,或者如果你把它的静态像这样:

public static List<Integer> myNumbers() { 
    List<Integer> numbers = new ArrayList<Integer>(); 
    numbers.add(5); 
    numbers.add(11); 
    numbers.add(3); 
    return(numbers); 
} 

你可以调用它是这样的:

List<Integer> stuff = Foo.myNumbers(); 
1

如果美孚是阶级封闭这种方法

class Foo{ 
    public ArrayList<Integer> myNumbers() { 
    //code code code 
    } 
} 

然后

new Foo().myNumbers(); 
1
MyClass obj = new MyClass(); 
ArrayList<Integer> numbers = obj.myNumbers(); 
0

你可以在另一个上使用类

public ArrayList<Integer> myNumbers = new Foo().myNumbers(); 

Foo myClass = new Foo(); 
public ArrayList<Integer> myNumbers = myclass.myNumbers(); 
9

假设您有类似这样:

public class MyFirstClass { 
    ... 
    public ArrayList<Integer> myNumbers() { 
    ArrayList<Integer> numbers = new ArrayList<Integer>(); 
    numbers.add(5); 
    numbers.add(11); 
    numbers.add(3); 
    return(numbers); 
    } 
    ... 
} 

您可以调用该方法,像这样:

public class MySecondClass { 
    ... 
    MyFirstClass m1 = new MyFirstClass(); 
    List<Integer> myList = m1.myNumbers(); 
    ... 
} 

既然你是方法试图打电话不是静态,您将不得不创建提供此方法的类的实例。一旦你创建了实例,你就可以访问该方法。

请注意,在上面的代码示例中,我使用了这一行:List<Integer> myList = m1.myNumbers();。这可以通过以下来改变:ArrayList<Integer> myList = m1.myNumbers();。但是,通常建议以编程为一个接口,而不是一个具体的实现,所以我对你的使用会做一些像这样的方法建议:

public List<Integer> myNumbers() { 
    List<Integer> numbers = new ArrayList<Integer>(); 
    numbers.add(5); 
    numbers.add(11); 
    numbers.add(3); 
    return(numbers); 
    } 

这将允许您指定该列表的内容无论如何实现List接口。

2
List<Integer> numbers = new TheClassName().myNumbers(); 
0

你的方法被调用,数组列表可以存储这样

YourClassName class = new YourClassName(); 
Arraylist<Integer> numbers = class.numbers(); 

这也使的ArrayList在这个类