2012-07-27 14 views
15

Ho una classe con un metodo come questo:Java Restituisce il metodo che restituisce l'arraylist?

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

come posso chiamare questo metodo all'interno di un'altra classe?

risposta

15

1. Se quella classe da cui si desidera chiamare questo metodo, è nello stesso pacchetto, quindi crea un'istanza di questa classe e chiama il metodo.

2. Usa Composition

3. Sarebbe meglio avere una Generic ArrayList come ArrayList<Integer> ecc ...

esempio:

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

Credo che si intende 'arr = t .myNumbers(); '? – npinti

5

È necessario creare un'istanza della classe in cui è contenuto oppure rendere statico il metodo.

Quindi, se è contenuta all'interno di classe Foo:

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

o in alternativa scorciatoia:

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

o se si rendono statico in questo modo:

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

è possibile chiamare così:

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

Se Foo è la classe di racchiudere questo metodo

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

poi

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

Puoi usarlo su un altro Classe

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

o

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

si Supponendo che hanno qualcosa in questo modo:

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

È possibile chiamare quel metodo in questo modo:

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

Dato che il metodo si è provare a chiamare non è statico, sarà necessario creare un'istanza della classe che fornisce questo metodo. Una volta creata l'istanza, avrai accesso al metodo.

Nota che nell'esempio di codice riportato sopra ho utilizzato questa riga: List<Integer> myList = m1.myNumbers();. Questo può essere modificato come segue: ArrayList<Integer> myList = m1.myNumbers();.Tuttavia, si raccomanda di solito di programmare a un'interfaccia, e non ad una concreta attuazione, quindi il mio suggerimento per il metodo che si sta utilizzando potrebbe essere quella di fare qualcosa di simile in modo da:

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

Questo vi permetterà di assegnare il il contenuto di quella lista a qualsiasi cosa implementa l'interfaccia List.

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

Il vostro metodo può essere chiamato ed l'ArrayList può essere memorizzato come questo

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

Questo permette anche l'ArrayList da manipolare ulteriormente in questa classe

Problemi correlati