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();
Это также позволяет манипулировать массивом далее в этом классе