Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
89 / 1 / 3
Регистрация: 04.07.2013
Сообщений: 282

Скопировать объект

16.09.2015, 14:22. Показов 1590. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть конструктор, который принимает объект.

Мне надо, скопировать этот объект несколько раз и изменить в каждой копии определённые переменные.
(Допустим, объект имеет 3 координаты, и мне надо сделать 3 его копии, что-бы потом задать им разные координаты, и получить 3 объекта с разными координатами)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.09.2015, 14:22
Ответы с готовыми решениями:

Есть ссылка на объект. Можно ли изменить объект, который хранится по этому адресу?
Есть ссылка на объект. Можно ли изменить объект, который хранится по этому адресу? Т.е. не меняя саму ссылку, изменить тип объекта, на...

Если объект добавлять в 2 контейнера, то в них будет ссылка или новый объект?
Есть объект - obj. Последовательно добавляю его в два контейнера container1.add(obj); container2.add(obj); Если я удалю...

Способ определить, что объект obj1 используется как объект синхронизации в текущий момент
Привет. Существует ли способ определить, что объект obj1 используется как объект синхронизации в текущий момент? т.е. есть конструкция...

18
0 / 0 / 0
Регистрация: 06.11.2012
Сообщений: 14
16.09.2015, 15:45
С помощью клонирования объектов
0
61 / 61 / 15
Регистрация: 18.05.2015
Сообщений: 322
16.09.2015, 15:52
Java
1
2
3
Some o1 = new Some();
Some o2 = o1.clone();
o2.setValue(11);
И т.д.
Класс при этом должен реализовать интерфепйс Clonable.
0
89 / 1 / 3
Регистрация: 04.07.2013
Сообщений: 282
16.09.2015, 15:53  [ТС]
Нагуглил я 1 штуку, но это получаются совсем не копии(
Java
1
2
3
4
5
    @Override    
    public Object clone() throws CloneNotSupportedException
    {
        return super.clone();
    }
Добавлено через 45 секунд
Не получились копии, у всех копий выходят одинаковые координаты...
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
16.09.2015, 15:54
svk2140, создаете новый объект и переписываете туда примитивы. Все что не примитивы тоже клонируете.
0
89 / 1 / 3
Регистрация: 04.07.2013
Сообщений: 282
16.09.2015, 16:00  [ТС]
У меня несколько классов, которые наследуют 1 класс. Мне надо, что-бы "личность" объекта сохранялась, при этом, получив объект родительского класса.
0
0 / 0 / 0
Регистрация: 06.11.2012
Сообщений: 14
16.09.2015, 16:01
Попробуйте так.
Java
1
2
3
4
5
6
7
8
9
public class A implements Cloneable{
    int x;
    int y;
 
    @Override
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}
0
89 / 1 / 3
Регистрация: 04.07.2013
Сообщений: 282
16.09.2015, 16:02  [ТС]
KEKCoGEN Если я буду делать так, как вы сказали, то "личность" объекта потеряется, и я получу лишь объект родительского класса.

Добавлено через 53 секунды
sleep3, у меня оно так и есть
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
16.09.2015, 16:06
тупо конечно, но по заданию
Кликните здесь для просмотра всего текста
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
28
29
30
31
32
33
34
35
    class Coords {
        private int x, y, z;
 
        Coords getClone(Coords obj) {
            Coords dolly = new Coords();
            dolly.setX(obj.getX());
            dolly.setY(obj.getY());
            dolly.setZ(obj.getZ());
            return dolly;
        }
 
        public int getX() {
            return x;
        }
 
        public void setX(int x) {
            this.x = x;
        }
 
        public int getY() {
            return y;
        }
 
        public void setY(int y) {
            this.y = y;
        }
 
        public int getZ() {
            return z;
        }
 
        public void setZ(int z) {
            this.z = z;
        }
    }
0
89 / 1 / 3
Регистрация: 04.07.2013
Сообщений: 282
16.09.2015, 16:06  [ТС]
Я, наверное, ужасно объясняю...
0
0 / 0 / 0
Регистрация: 06.11.2012
Сообщений: 14
16.09.2015, 16:07
svk2140, Странно у меня работает). А клонируете так
Java
1
A b = (A) a.clone();
?
0
89 / 1 / 3
Регистрация: 04.07.2013
Сообщений: 282
16.09.2015, 16:11  [ТС]
Я вызываю метод так:
Java
1
2
3
4
5
6
7
C object1 = A(); //Так-же может быть и не А, а В
metod(object1);
 
public static void metod(C object)
{
//Тут надо склонировать object, и получить 2 таких-же объекта с разными координатами.
}
Добавлено через 2 минуты
sleep3,

У меня код вроде этого:
Java
1
2
3
4
5
6
7
8
9
10
11
C object1 = A(); //Так-же может быть и не А, а В
metod(object1);
 
public static void metod(C object)
{
С objectClone1 = (С) object.clone();
C objectClone2 = (С) object.clone();
 
objectClone1.posX = 1;
objectClone2.posX = 2;
}
Но в итоге, оба клона имеют posX = 2
0
0 / 0 / 0
Регистрация: 06.11.2012
Сообщений: 14
16.09.2015, 16:13
svk2140, Нужно вместо
Java
1
2
С objectClone1 = C.clone();
C objectClone2 = C.clone();
Java
1
2
С objectClone1 = object.clone();
C objectClone2 = object.clone();
0
89 / 1 / 3
Регистрация: 04.07.2013
Сообщений: 282
16.09.2015, 16:14  [ТС]
Это опечатка (Исправил)
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
16.09.2015, 16:16
sleep3, попробуй склонировать поле не стринг и не примитивный тип
а потом поменять его у клона и посмотреть что стало с оригиналом

выше KEKCoGEN дал направление, узбагойтесь, не будет полноценных клонов
0
89 / 1 / 3
Регистрация: 04.07.2013
Сообщений: 282
16.09.2015, 16:27  [ТС]
Печально, придётся писать один и тот-же код, кучу раз... (предопределять метод в каждом объекте)
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
16.09.2015, 16:46
svk2140, на самом деле выше что вы привели интерфейс Cloneable тоже подойдет
0
61 / 61 / 15
Регистрация: 18.05.2015
Сообщений: 322
16.09.2015, 19:10
Не знаю, что там у тебя, объясняешь ты действительно плохо.
Если надо клонировать объекты и потом иметь возможность поменять координаты у клона, не затрагивая родительский объект, то вот как это примерно выглядит
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
28
29
30
31
32
33
34
35
36
37
38
39
class C implements Cloneable {
    
    private int x,y,z; // координаты
    
    public C(){
        x = y = z =0;
    }
    
    public C(int x, int y, int z){
        setCoords(x,y,z);
    }
    
    public C clone(){
        return new C(x,y,z);
    }
    
    public void setCoords(int x, int y, int z){
        this.x = x;
        this.y = y;
        this.z = z;
    }
    
    public String toString(){
        return "(x = " + x + "; y = " + y + "; z = " + z + ")";
    }
}
 
public class TestingTest {
    
       public static void main (String[] args){
          C a = new C(1,2,3);
          System.out.println("a в начале:\t"+a);
          C b = a.clone();
          System.out.println("b - клон a в начале:\t"+b);
          b.setCoords(81, 92, 44);
          System.out.println("b - клон a после ресета:\t"+b);
          System.out.println("a неизменно, убедимся:\t"+a);
       }
}
0
16.09.2015, 20:25

Не по теме:

ну да, а когда я это говорил немного выше, никто и внимания не обратил :D

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.09.2015, 20:25
Помогаю со студенческими работами здесь

Как скопировать объект в VBA
Set ObjCopy=OriginalObj - не подходит. Создал свой объект и возникла необходимость программно сделать его копию. метод Set...

Как скопировать объект класса
Есть указатель на класс, нужно его скопировать в другой указатель на тотже класс, можно это как-то сделать по простому , чтобы не...

Как скопировать объект на новый слой?
У меня, при зажатии ALT и перетаскивании (копировании) объекта, новый слой не создается, а объект копируется внутри того же слоя. Как...

Как скопировать в текстурный объект часть изображения?
Предположим, что я хочу, используя наложение текстур, отобразить изображение размером 2048х1024, при этом максимальный размер текстуры -...

Как скопировать объект с удаленным копирующим конструктором?
Здравствуйте. Я использую SFML и делаю биндинги к Lua на основе luabind. Суть такова: в скрипте lua делается инстанс класса sf::Window. Над...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru