У меня есть классКак создать копию объекта класса с картой?
public class student
{
private int Id;
private map<String , String> subjects;
private map<String , String> teachers;
private String name;
}
Позвольте мне объяснить ситуацию более четко. У меня есть функция, которая принимает объект Student в качестве параметра. Эта функция вызывается из разных классов. Теперь в этой функции я создаю семь потоков для выполнения некоторых вычислений на основе входного объекта студента. Хотя в настоящее время модификации объекта-ученика нет. Тем не менее я хочу, чтобы это было безопасно, передавая копии студенческого объекта, чтобы, если кто-либо позже вносил изменения в любой из потоков, он не должен изменять другие потоки.
Итак, как я могу создать новый объект для карты? Еще одно решение, которое я мог бы попробовать, - создать этот класс как неизменный, но даже тогда карта является проблемой. Как сделать карту неизменной.
Если нить изменяет карту, вам нужно скорректировать все копии позже? Это сложная проблема. –
Вы можете просто вернуть копию карты из метода getter? 'new HashMap()'. О, и вы хотите, чтобы потоки могли изменять экземпляр «Студент»? Это повлияет на все остальные потоки. –
требования кажутся неясными. Вы хотите, чтобы эти потоки изменяли объект или нет? Если вы можете решить свою проблему таким образом, чтобы ваши объекты были неизменными, это самый простой и простой способ, я не понимаю, почему «карта является проблемой» здесь. возможно [Java: как сделать приватное поле? Карта неизменной внутри класса?] (http://stackoverflow.com/q/19125160/217324) связана? –