Java - Как получить доступ к ArrayList другого класса?

Привет, я новичок в Java, и это мой вопрос: У меня есть этот первый класс со следующими переменными:

import java.util.ArrayList;

public class numbers {
    private int number1 = 50;
    private int number2 = 100;
}

И у меня тоже этот класс:

import java.util.ArrayList;

public class test {
    private numbers number;
}

Мой вопрос здесь: я хочу сохранить переменные number1 и number2 в ArrayList, а затем получить доступ к этому ArrayList из теста класса. Как я могу это сделать?

Ответ 1

import java.util.ArrayList;
public class numbers {
   private int number1 = 50;
   private int number2 = 100;
   private List<Integer> list;

   public numbers() {
       list = new ArrayList<Integer>();
       list.add(number1);
       list.add(number2);
   }

   public List<Integer> getList() {
       return list;
   }
}

И тестовый класс:

import java.util.ArrayList;
public class test {
   private numbers number;

   //example
   public test() {
     number = new numbers();
     List<Integer> list = number.getList();
     //hurray !
   }
}

Ответ 2

Вы можете сделать это, предоставив в классе numbers:

  • Метод, который возвращает объект ArrayList.
  • Метод, который возвращает немодифицируемую оболочку ArrayList. Это предотвращает внесение изменений в список без знания номеров классов.
  • Способы, которые предоставляют набор операций, которые вы хотите поддерживать из номеров классов. Это позволяет номерам классов управлять набором поддерживаемых операций.

Кстати, существует сильное соглашение о том, что имена классов Java в верхнем регистре.

Случай 1 (простой getter):

public class Numbers {
      private List<Integer> list;
      public List<Integer> getList() { return list; }
      ...
}

Случай 2 (немодифицируемая оболочка):

public class Numbers {
      private List<Integer> list;
      public List<Integer> getList() { return Collections.unmodifiableList( list ); }
      ...
}

Случай 3 (конкретные методы):

public class Numbers {
      private List<Integer> list;
      public void addToList( int i ) { list.add(i); }
      public int getValueAtIndex( int index ) { return list.get( index ); }
      ...
}

Ответ 3

Вы можете сделать следующее:

  public class Numbers {
    private int number1 = 50;
    private int number2 = 100;
    private List<Integer> list;

    public Numbers() {
      list = new ArrayList<Integer>();
      list.add(number1);
      list.add(number2);
    }

    int getNumber(int pos)
    {
      return list.get(pos);
    }
  }

  public class Test {
    private Numbers numbers;

    public Test(){
      numbers = new Numbers();
      int number1 = numbers.getNumber(0);
      int number2 = numbers.getNumber(1);
    }
  }

Ответ 4

Два способа

1) введите first class и getter для arrayList

или

2) Сделайте arraylist как static

И наконец

Основы Java по Oracle

Ответ 5

Поместите их в массивList в свой первый класс, например:

import java.util.ArrayList;
public class numbers {
private int number1 = 50;
private int number2 = 100;

public ArrayList<int> getNumberList() {
ArrayList<int> numbersList= new ArrayList<int>();
numbersList.add(number1);
numberList.add(number2);
....
return numberList;

}
}

Затем в вашем тестовом классе вы можете вызвать numbers.getNumberList(), чтобы получить свой список массивов. Кроме того, вы можете создать такие методы, как addToList/removeFromList, в своем классе чисел, чтобы вы могли обрабатывать его так, как вам нужно.

Вы также можете получить доступ к переменной, объявленной в одном классе, другой, просто как

numbers.numberList;

если вы объявили его публичным.

Но это не такая хорошая практика, на мой взгляд, так как вам, вероятно, придется позже изменить этот список в своем коде. Обратите внимание, что вы должны добавить свой класс в список импорта.

Если вы можете сказать мне, что ваши требования к приложениям, я смогу рассказать вам более точно, что я думаю, что это лучше всего сделать.