17

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

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

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

4

8 回答 8

22

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

2.使用Composition

3.最好有一个Generic ArrayListlike ArrayList<Integer>etc...

例如:

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.
 }


}
于 2012-07-27T05:58:27.457 回答
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);
   }
   ...
}

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

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

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

请注意,在上面的代码示例中,我使用了这一行: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接口的任何内容。

于 2012-07-27T05:59:15.733 回答
7

您需要实例化它包含的类,或使方法静态。

因此,如果它包含在 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();
于 2012-07-27T05:57:56.143 回答
2
List<Integer> numbers = new TheClassName().myNumbers();
于 2012-07-27T05:59:47.077 回答
1

如果 Foo 是包含此方法的类

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

然后

new Foo().myNumbers();
于 2012-07-27T05:58:14.937 回答
1
MyClass obj = new MyClass();
ArrayList<Integer> numbers = obj.myNumbers();
于 2012-07-27T05:58:30.977 回答
0

您可以在其他课程上使用

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

或者

Foo myClass = new Foo();
 public ArrayList<Integer> myNumbers = myclass.myNumbers();
于 2012-07-27T05:59:01.003 回答
0

可以调用您的方法,并且可以像这样存储arraylist

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

这也允许在此类中进一步操作数组列表

于 2017-04-16T01:39:13.750 回答