Я знаю, что когда дело доходит до передачи объектов в Java, ссылка на объект передается как значение.То, что вы когда-либо вносите в этот объект, отражается и в исходном объекте.Чтобы избежать этого, мы используем свойство неизменяемости в java.
Итак, мой вопрос, я создал неизменный класс Employee
, когда я передаю объект этого Employee
классадля какого-либо метода в другом классе, я не хочу, чтобы этот метод вносил какие-либо изменения в этот объект.Даже если это произойдет, я не хочу, чтобы изменения влияли на исходный объект, созданный в вызывающем классе.
Вот мой пример кода.
public final class Employee {
int employeeId;
public int getId() {
return employeeId;
}
public void setId(int id) {
this.employeeId = id;
}
}
public class Worker {
public static void process(Employee f, Employee g){
int c = f.getId();
f.setId(g.getId());
g.setId(c);
}
}
public class ImmutabilityTest{
public static void main(String[] args) {
Employee teamMember = new Employee();
Employee teamLead = new Employee();
teamMember.setId(5);
teamLead.setId(10);
System.out.println("Before process "+teamMember.getId() + " " + teamLead.getId());
Worker.process(teamMember, teamLead);
System.out.println("After process "+teamMember.getId() + " " + teamLead.getId());
}
}
Вывод будет
Before process 5 10
After process 10 5
Есть ли способ избежать изменения значений переменных-членовСотрудник класса?(кроме создания их final
) Если нет, то как мы на самом деле используем свойство Неизменность в Java в пользовательском классе?
Любые предложения / мнения / указатели приветствуются!Спасибо ..