Мне трудно понять, как передать по ссылке в Java. В настоящее время у меня есть класс следующим образом
class Example {
ArrayList<Foo> list;
Bar hello;
Example(ArrayList<foo> list, Bar hello) {
this.list = list;
this.hello = hello;
}
}
В моем основном классе я инициализирую список массивов Foo и объект Bar. Затем я инициализирую пример, передавая в список массив и объекты Bar. Я хочу, чтобы всякий раз, когда объекты, которые я передавал в Example, обновлялись в классе Main, они также обновлялись в Example. Но пока обновляется только ArrayList. Но Бар не привет. Чем ArrayList отличается от Bar тем, что обновляет, а Bar нет?
Редактировать
Хорошо, вот часть действующего кода:
public class Main {
static int
board_n = 1, // amount of boards
rows = 8, // board width
cols = 8; // board height
static ArrayList<Board> boardlist;
static Player player1 = new Player("Mr");
static Player player2 = new Player("9000");
static Player currentPlayer = player1;
static Move dummy = null;
public static void main(String[] args) {
int random_row, random_col, random_board, rand_i;
Dimension size = new Dimension(rows, cols);
boardlist = new ArrayList(board_n);
for(int i = 0; i < board_n; i++) {
boardlist.add(new Board(i, size));
}
Rules rulez = new Rules(boardlist, dummy, currentPlayer);
rulez.setPieces();
Random generator = new Random();
while(rulez.getPiecesAvailable("Checker", player1.getName()) > 0 || rulez.getPiecesAvailable("Checker", player2.getName()) > 0) {
// initialize points and generate random location
random_row = generator.nextInt(rows);
random_col = generator.nextInt(cols);
random_board = generator.nextInt(board_n);
Point point = new Point(random_row, random_col);
// initialize pieces and randomly set moveable
Piece hello1 = new Checker(player1.getName(), Integer.toString(random_row), Integer.toString(random_col), Integer.toString(0), -1);
Piece hello2 = new Checker(player2.getName(), Integer.toString(random_row), Integer.toString(random_col), Integer.toString(0), 1);
// add piece to board
if(rulez.validateAddition(new Location(point, random_board), hello1))
boardlist.get(random_board).addPiece(hello1, point);
if(rulez.validateAddition(new Location(point, random_board), hello2))
boardlist.get(random_board).addPiece(hello2, point);
}
currentPlayer = player2;
}
}
Когда я создаю объект Rules, я передаю ему boardboard, dummy и currentPlayer. Когда я добавляю материал в список форумов, список правил внутри Правил такой же, как и снаружи. Но в последнем утверждении, когда я меняю currentPlayer на player2, он не меняется в Правилах.