Java-Jak uzyskać dostęp do ArrayList innej klasy?

Witam jestem początkujący w Javie i oto moje pytanie: Mam tą pierwszą klasę z następującymi zmiennymi:

import java.util.ArrayList;

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

I ja też mam tą klasę:

import java.util.ArrayList;

public class test {
    private numbers number;
}

Moje pytanie brzmi: chcę zapisać zmienne number1 i number2 do ArrayList, a następnie uzyskać dostęp do tej ArrayList z testu klasy. Jak mogę to zrobić?

Author: ollo, 2013-05-09

5 answers

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

I klasa testowa:

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

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

 17
Author: Konstantin Yovkov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-07 10:40:38

Możesz wykonać następujące czynności:

  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);
    }
  }
 3
Author: Malf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-09 13:00:53

Możesz to zrobić podając w klasie numbers:

  • metoda, która zwraca sam obiekt ArrayList.
  • metoda, która zwraca niemodyfikowalną otoczkę ArrayList. Uniemożliwia to modyfikację listy bez znajomości numerów klas.
  • metody, które zapewniają zestaw operacji, które chcesz obsługiwać z numerów klas. Pozwala to numerom klas kontrolować zestaw obsługiwanych operacji.

Przy okazji, jest silny konwencja, że nazwy klas Java są pisane wielkimi literami.

Przypadek 1 (simple getter):

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

Przypadek 2 (opakowanie bez modyfikacji):

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

Przypadek 3 (metody szczególne):

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
Author: Andy Thomas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-09 13:05:19

Two ways

1) tworzy instancję first class i getter dla arrayList

Lub

2)Utwórz arraylist jako static

I wreszcie

Podstawy Javy Według Oracle

 1
Author: ꜱᴜʀᴇꜱʜ ᴀᴛᴛᴀ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-09 12:49:58

Umieść je w arrayList w pierwszej klasie, jak:

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;

}
}

Następnie, w klasie testowej możesz dzwonić na numery.getNumberList() aby pobrać arrayList. Ponadto możesz chcieć utworzyć metody takie jak addToList / removeFromList w klasie numbers, abyś mógł obsługiwać je tak, jak tego potrzebujesz.

Możesz również uzyskać dostęp do zmiennej zadeklarowanej w jednej klasie z innej po prostu jak

numbers.numberList;

Jeśli masz to ogłoszone tam jako publiczne.

Ale to nie jest taka dobra praktyka w moim zdaniem, ponieważ prawdopodobnie będziesz musiał później zmodyfikować tę listę w swoim kodzie. Pamiętaj, że musisz dodać swoją klasę do listy importu.

Jeśli możesz mi powiedzieć, jakie są wymagania aplikacji, będę w stanie powiedzieć bardziej precyzyjnie, co myślę, że najlepiej jest zrobić.

 1
Author: Adrian Zaharia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-09 13:04:12