返回arraylist的Java返回方法?

Nik*_*hil 17 java

我有一个类有这样的方法:

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

我如何在另一个类中调用此方法?

Kum*_*tra 17

1.如果要从中调用此方法的类位于同一个包中,则创建此类的实例并调用该方法.

2.使用Composition

3.这将是最好有一个Generic ArrayListArrayList<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.
 }


}
Run Code Online (Sandbox Code Playgroud)


npi*_*nti 9

假设你有这样的东西:

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

您可以像这样调用该方法:

public class MySecondClass {
    ...
    MyFirstClass m1 = new MyFirstClass();
    List<Integer> myList = m1.myNumbers();
    ...
}
Run Code Online (Sandbox Code Playgroud)

由于您尝试调用的方法不是静态的,因此您必须创建提供此方法的类的实例.创建实例后,您将可以访问该方法.

注意,在上面的代码示例中,我使用了这一行: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);
   }
Run Code Online (Sandbox Code Playgroud)

这将允许您将该列表的内容分配给实现该List接口的任何内容.


Dom*_*mra 6

您需要实例化其中包含的类,或使该方法保持静态.

所以如果它包含在Foo类中:

Foo x = new Foo();
List<Integer> stuff = x.myNumbers();
Run Code Online (Sandbox Code Playgroud)

或者简写:

List<Integer> stuff = new Foo().myNumbers();
Run Code Online (Sandbox Code Playgroud)

或者如果你这样做是静态的:

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

你可以这样称呼它:

List<Integer> stuff = Foo.myNumbers();
Run Code Online (Sandbox Code Playgroud)