2012-07-27 17 views
15

tengo una clase con un método como este:Método devuelto por Java que devuelve el arraylist?

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

cómo puedo llamar a este método dentro de otra clase?

Respuesta

15

1. Si esa clase de la cual desea llamar a este método, se encuentra en el mismo paquete, a continuación, crea una instancia de esta clase y llama al método.

2. UsoComposition

3. Sería mejor tener un Generic ArrayList como ArrayList<Integer> etc ...

por ejemplo:

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

Creo que significa 'arr = t .myNumbers(); '? – npinti

5

Necesita crear una instancia de la clase en la que está contenida o hacer que el método sea estático.

Así que si está contenido dentro de la clase Foo:

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

o alternativamente abreviada:

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

o si lo hacen estática, así:

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

puede llamar es así:

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

Si Foo es la clase encierra este método

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

continuación

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

Puedes usar en otro clase

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

o

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

Asumiendo que tienen algo así:

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

Usted puede llamar a ese método, así:

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

Dado que el método está tratando de llamar no es estática, tendrá que crear una instancia de la clase que proporciona este método. Una vez que haya creado la instancia, tendrá acceso al método.

Tenga en cuenta que en el ejemplo de código anterior, utilicé esta línea: List<Integer> myList = m1.myNumbers();. Esto se puede cambiar de la siguiente manera: ArrayList<Integer> myList = m1.myNumbers();.Sin embargo, generalmente se recomienda programar a una interfaz, y no a una aplicación concreta, así que mi sugerencia para el método que está utilizando sería hacer algo así:

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

Esto le permitirá asignar la contenido de esa lista a lo que implemente la interfaz List.

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

Su método puede ser invocado y la ArrayList se puede almacenar como esto

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

Esto también permite que el ArrayList a manipular adicionalmente en esta clase

Cuestiones relacionadas