2012-07-27 13 views
15

Ich habe eine Klasse mit einer Methode wie folgt:Java Returning-Methode, die Arraylist zurückgibt?

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

wie kann ich innerhalb einer anderen Klasse diese Methode aufrufen?

Antwort

15

1. Wenn die Klasse, von der Sie diese Methode aufrufen wollen, im selben Paket ist, dann Erstellen Sie eine Instanz dieser Klasse und rufen Sie die Methode auf.

2. Verwenden Composition

3. Es wäre besser, einen haben, Generic ArrayList wie ArrayList<Integer> etc ...

zB:

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

in dieser Klasse manipuliert werden gespeichert Ich glaube, Sie bedeuten 'arr = t .myNumbers(); '? – npinti

5

Sie müssen die Klasse, in der sie enthalten ist, instanziieren oder die Methode statisch machen.

Also, wenn es innerhalb der Klasse Foo enthalten ist:

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

oder alternativ eine Abkürzung:

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

oder wenn Sie es wie so statisch machen:

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

Sie anrufen können es mag so:

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

Wenn Foo ist die Klasse umschließen diese Methode

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

dann

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

Sie können auf einem anderen verwenden Klasse

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

oder

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

Sie haben wie so etwas Angenommen:

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

Sie können wie diese Methode aufrufen, so:

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

Da das Verfahren Sie sind versuchen, anzurufen ist nicht static, müssen Sie eine Instanz der Klasse erstellen, die diese Methode bereitstellt. Sobald Sie die Instanz erstellt haben, haben Sie Zugriff auf die Methode.

Beachten Sie, dass im obigen Codebeispiel die folgende Zeile verwendet wurde: List<Integer> myList = m1.myNumbers();. Dies kann folgendermaßen geändert werden: ArrayList<Integer> myList = m1.myNumbers();.Es ist jedoch in der Regel mit einer Schnittstelle zu programmieren empfohlen, und nicht auf eine konkrete Umsetzung, so meinen Vorschlag für die Methode, die Sie wären verwenden, etwas zu tun, wie so:

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

Dies ermöglicht Ihnen, die zuweisen Inhalt dieser Liste zu dem, was die List Schnittstelle implementiert.

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

Ihre Methode aufgerufen werden kann und die Arraylist kann wie diese

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

ermöglicht dies auch die Arraylist weiter