powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Передать объект по значениям?
22 сообщений из 22, страница 1 из 1
Передать объект по значениям?
    #38711655
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Конструктор, который вызывается два раза, с аргументом, который, как я ожидаю, неизменный между вызовами конструктора. Однако, второй вывод из конструктора опровергает это, так как данные из data.getCities() уже изменились! Мне казалось, что data не должен тут измениться. Я так понимаю, что объект предается по ссылке. Каким же образом передать так, что data остался неизменным?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
	public General(Data data) {
		this.cities = data.getCities();
		this.catalog = data.getCatalog();
		this.excludedCities = new HashSet<>();
		//
		for (City city : catalog) {
			System.out.println(city.getName() + " - " + city.getSource());
		}
	}
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38711660
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
данные изменились из data.getCatalog();
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38711663
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,

передавай object.clone()
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38711667
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, стал консультантом в Java?
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38711682
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivrema174,
передавай object.clone()
если бы был такой метод, то так бы и передал
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38711731
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
имплементил этот метод от клонабле, в нем только return super.clone();
но похоже ничего не меняется. теперь то я передаю новый объект?

Код: java
1.
2.
3.
4.
5.
		for(String[] pairCity: data.getPairCities()) {
			Data copyData = (Data) data.clone();
			General gen = new General(copyData);
			gen.resolve(pairCity);
		}
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38711732
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,

Код: java
1.
return super.clone();



ничего не делает если твой базовый класс - это Object. Ты должен руками
воссоздать "глубокое" копирование всех полей.
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38711737
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
качнул либу cloning (Java Deep-Cloning library), все заработало
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38711749
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Молодец. Только почитай про клонирование. Ато наклонируешь файлов и сокетов....
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38711769
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да читал... в том классе ничего такого нет, лучше подскажите как обойтись без всей этой 3rd party мутотени, т.е. как перестроить код, чтобы сделать то, что показано в первом сообщении
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38711821
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,
Реализуйте метод clone() в своем объекте Data и вызывайте конструктор
Код: java
1.
new General(data.clone());


это если я правильно понял что вам нужно.
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38711926
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174да читал... в том классе ничего такого нет, лучше подскажите как обойтись без всей этой 3rd party мутотени, т.е. как перестроить код, чтобы сделать то, что показано в первом сообщении
Покажи исходник Data
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38711955
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonrema174да читал... в том классе ничего такого нет, лучше подскажите как обойтись без всей этой 3rd party мутотени, т.е. как перестроить код, чтобы сделать то, что показано в первом сообщении
Покажи исходник Data

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
public class Data {
	
	private int cities;
	
	private List<City> catalog = new ArrayList<>();
	
	private List<String[]> pairCities = new ArrayList<>();	

	public int getCities() {
		return cities;
	}
	public void setCities(int cities) {
		this.cities = cities;
	}
	public List<City> getCatalog() {
		return catalog;
	}
	public void setCatalog(List<City> catalog) {
		this.catalog = catalog;
	}
	public List<String[]> getPairCities() {
		return pairCities;
	}
	public void setPairCities(List<String[]> pairCities) {
		this.pairCities = pairCities;
	}
}
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38711991
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174Каким же образом передать так, что data остался неизменным
Ничего не понял.
Data - объект. Вам нужна копия объекта или ссылка в памяти на один и тот-же объект?
Объект остался неизменным - imho не точная фраза.
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38712001
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174
Код: java
1.
	private List<String[]> pairCities = new ArrayList<>();	


Вобщем смотри. Метод клона сделать не очень сложно.

Но сходу замечание. Как ты используешь эту структуру. Список массивов.
Что лежит внутри?

Возможно есть более простая реализация для пар.
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38712229
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 03.08.2014 19:16, rema174 wrote:

Кстати, всё ещё остаётся вопрос с этим:

> Конструктор, который вызывается два раза, с аргументом, который, как я
> ожидаю, неизменный между вызовами конструктора. Однако, второй вывод из
> конструктора опровергает это, так как данные из data.getCities() уже
> изменились! Мне казалось, что data не должен тут измениться.

В смысле, хорошо бы подумать, что же там в этих конструкторах происходит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38712242
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читал читал. Три раза прочел весь топик. Нифига не понял. Где и что у автора "изменилось" и что его код вообще делать должен.
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38712245
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174Каким же образом передать так, что data остался неизменным?
Используйте Immutable Object. Если очень нужно, чтобы данные нельзя было изменить, соотвенственно надо и класс так реализовать.
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38712482
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonrema174
Код: java
1.
	private List<String[]> pairCities = new ArrayList<>();	


Вобщем смотри. Метод клона сделать не очень сложно.
Но сходу замечание. Как ты используешь эту структуру. Список массивов.
Что лежит внутри? Возможно есть более простая реализация для пар.
в каждом массиве по два стринга
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38712485
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
допусти там вместо листа будет мэп(стринг, стринг)
p.s. я вообщем-то сделал как хотел, но интересно узнать, как там реализуется метод clone
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38712518
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,
вроде вот, все методы копирования массива
http://jdevnotes.blogspot.ru/2009/05/java-2.html
выбирай любой по вкусу.
...
Рейтинг: 0 / 0
Передать объект по значениям?
    #38712573
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вопрос закрыт, спасибо за внимание
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Передать объект по значениям?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]