Java Возвращаемый метод, который возвращает arraylist?

У меня есть один класс с таким методом:

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

как я могу вызвать этот метод внутри другого класса?

Ответы

Ответ 1

1. Если этот класс, из которого вы хотите вызвать этот метод, находится в одном пакете, затем создайте экземпляр этого класса и вызовите метод.

2. Используйте Composition

3. Лучше иметь Generic ArrayList как ArrayList<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.
 }


}

Ответ 2

Предполагая, что у вас есть что-то вроде этого:

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.

Ответ 3

Вам нужно создать экземпляр класса, в котором он содержится, или сделать метод статическим.

Итак, если он содержится внутри класса 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();

Ответ 4

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

Ответ 5

Если Foo является классом, заключите этот метод

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

затем

new Foo().myNumbers();

Ответ 6

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

Ответ 7

Вы можете использовать в другом классе

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

или

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

Ответ 8

Ваш метод может быть вызван, и архиватор можно сохранить таким образом

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

Это также позволяет манипулировать массивом далее в этом классе