Возможно ли в Java хранить объект, который вы хотите, и изменять его значения?Сторнирование объекта и его использование
Я работаю над сервером-клиентом rmi, и хочу сохранить своих клиентов на ArrayList
на моем сервере. Это казалось хорошим, пока я не попытался изменить значения клиента непосредственно с сервера. Если бы я использовал C++, я бы объявил указатель.
Я называю мой метод с кодом look_up.LogIn(this);
Сервер:
@Override
public void LogIn(Client temp) throws RemoteException {
for (Client arr : users) {
if (arr.equals(temp)) {
temp.setID(0);
}
}
// users.add(temp);
Random rand = new Random();
int randomNum = rand.nextInt((100 - 1) + 1) + 1;
boolean flag = false;
do {
for (Client arr : users) {
if (arr.getId() == randomNum) {
flag = true;
}
}
} while (flag);
temp.setID(randomNum);
System.out.println("Id we .. : " + temp.getId());
users.add(temp);
}
код клиента:
if (e.getSource() == logIn) {
try {
look_up.LogIn(this);
if (this.id != 0) {
JOptionPane.showMessageDialog(frame, "Loged in Succesfully");
logIn.setEnabled(false);
submit.setEnabled(true);
information.setText(look_up.check_Files());
tempValue = this.id;
System.out.println("Temp value afer login : " + tempValue);
} else {
JOptionPane.showMessageDialog(frame, "Sorry but somthing went wrong try to log in again...");
}
} catch (RemoteException ex) {
System.err.println("Object cant be send");
ex.printStackTrace();
}
}
Эти строки кода работают только если определить мой LogIn
, как int
и вернуть значение случайного числа. Когда я попытался изменить его, я получил ошибку.
Странно, что когда я установил temp.setId
, он работал и печатался хорошо, но на клиентах фактический экземпляр экземпляра остался 0. Как это возможно?