2012-07-27 9 views
15

mam jedną klasę z metody takie jak to:Powrotna metoda Java zwracająca listę tablic?

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

jak mogę nazwać tę metodę wewnątrz innej klasy?

Odpowiedz

15

1. Jeśli to klasa, z której chcesz wywołać tę metodę, to w tym samym opakowaniu, a następnie utwórz instancję tej klasy i wywołaj metodę.

2. Zastosowanie Composition

3. Byłoby lepiej mieć Generic ArrayList jak ArrayList<Integer> etc ...

np:

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

myślę znaczy 'arr = t .myNumbers(); '? – npinti

5

Należy utworzyć instancję klasy, w której się znajduje, lub wprowadzić metodę statyczną.

Więc jeśli to jest zawarte w klasie Foo:

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

lub alternatywnie skrótem:

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

lub jeśli je statyczny tak:

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

można nazwać to tak:

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

Jeśli Foo jest klasa załączyć tę metodę

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

następnie

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

Możesz użyć na innym Klasa

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

lub

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

zakładając, że masz coś tak:

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

Można nazwać tę metodę tak:

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

ponieważ metoda jesteś próba połączenia nie jest static, będziesz musiał utworzyć instancję klasy, która zapewnia tę metodę. Po utworzeniu instancji uzyskasz dostęp do tej metody.

Uwaga: w powyższym przykładzie kodu użyłem następującej linii: List<Integer> myList = m1.myNumbers();. Można to zmienić przez: ArrayList<Integer> myList = m1.myNumbers();.Jednak zaleca się zwykle zaprogramować do interfejsu, a nie do konkretnej implementacji, więc moja propozycja dla metody używanej byłoby coś zrobić tak:

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

To pozwoli Ci przypisać zawartość tej listy, która implementuje interfejs List.

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

Twoja metoda może być wywołana i ArrayList można przechowywać jak ten

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

Pozwala także ArrayList być manipulowane dalej w tej klasie

Powiązane problemy