2012-07-27 59 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在這個類