Java-retourmethode die arraylist retourneert?

Ik heb één klasse met een methode als deze:

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

hoe kan ik deze methode binnen een andere klasse aanroepen?


Antwoord 1, autoriteit 100%

1.Als de klasse van waaruit je deze methode wilt aanroepen, in hetzelfde pakket zit, maak dan een instantie van deze klasse aan en roep de methode aan.

2.Gebruik Composition

3.Het zou beter zijn om een Generic ArrayListte hebben zoals ArrayList<Integer>enz…

bijvoorbeeld:

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

Antwoord 2, autoriteit 45%

Ervan uitgaande dat je zoiets hebt als:

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

Je kunt die methode als volgt aanroepen:

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

Aangezien de methode die u probeert aan te roepen niet statischis, moet u een instantie maken van de klasse die deze methode biedt. Nadat u de instantie heeft gemaakt, heeft u toegang tot de methode.

Merk op dat ik in het bovenstaande codevoorbeeld deze regel heb gebruikt: List<Integer> myList = m1.myNumbers();. Dit kan als volgt worden gewijzigd: ArrayList<Integer> myList = m1.myNumbers();. Het wordt echter meestal aanbevolen om naar een interface te programmeren en niet naar een concrete implementatie, dus mijn suggestie voor de methode die je gebruikt zou zijn om zoiets te doen:

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

Hierdoor kunt u de inhoud van die lijst toewijzen aan alles wat de interface Listimplementeert.


Antwoord 3, autoriteit 30%

Je moet de klasse waarin deze zich bevindt instantiëren, of de methode statisch maken.

Dus als het in de klas Foo zit:

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

of alternatief steno:

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

of als je het zo statisch maakt:

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

je kunt het zo noemen:

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

Antwoord 4, autoriteit 10%

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

Antwoord 5, autoriteit 5%

Als Foo de klasse is, sluit dan deze methode in

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

dan

new Foo().myNumbers();

Antwoord 6, autoriteit 5%

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

Antwoord 7

Je kunt het in een andere klas gebruiken

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

of

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

Antwoord 8

Uw methode kan worden aangeroepen en de arraylijst kan zo worden opgeslagen

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

Hierdoor kan de arraylist ook verder worden gemanipuleerd in deze klasse

Other episodes