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ć?
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 !
}
}
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);
}
}
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 ); }
...
}
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
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ć.
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