Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Копирование класса


Автор: axod 20.3.2005, 13:09
как скопировать класс..... НЕ скопировать указатель а именнт класс

Варриант
Class a = new Class();
Class b = a;

но это не проканывает.

?

Автор: ZAVS 20.3.2005, 14:32
для скопирования обьектов есть метод clone();
он объявлен в классе Object , от которого все наследуют,
но для своих классов ты должен переписать его

Автор: LSD 20.3.2005, 14:39
Для каждого загруженного класса JVM создает экземпляр объекта java.lang.Class. Такой объект существует в единственном экземпляре (для каждого класса) и создается только JVM. А зачем это нужно?

Автор: axod 20.3.2005, 15:30
Вообще как-нибудь без clone() я так знаю, но так мне не надо.

Просто на создание объекта класса уходит время, ну а просто коопированием будет быстрее.
(Скажем прога должна работать очень быстро)

Ну если можно вообще такое сделать, если нет то просто придётся для этого свой класс придумывать.

Автор: LSD 20.3.2005, 15:56
Цитата(axod @ 20.3.2005, 15:30)
Вообще как-нибудь без clone() я так знаю, но так мне не надо.

Для создания копии объекта и предназначен метод clone(). В простейшем случае это выглядит так:
Код
public class MyClass implements Cloneable
{
  ...
  public Object clone()
  {
    try
    {
      return super.clone();
    }
    catch(CloneNotSupportedException e)
    {
      throw new InternalError();
    }
  }
}

Посмотри у Брюса Эткеля там у него это хорошо объясняется.

Автор: axod 20.3.2005, 17:20
Вообще кроме clone() нету разве ничего нету другого?

Автор: Domestic Cat 20.3.2005, 18:57
Для начала объясни, почему ты считаешь, что создание объекта - настолько медленная операция что нужно что-то еще.

Автор: batigoal 20.3.2005, 21:15
Так копировать надо объект или класс, как указано в топике?

Автор: Guest 20.3.2005, 23:12
Код

     public myType copyObject ( myType t ) {
              myType n_instance = new myType();
              n_instance.setVariable1 = t.getVariable1;
             //.....  и т.д.
             return n_instance; 
     }
   

   myType A = new myType( );
   myType B = A.copyObject(A);


Автор: Domestic Cat 20.3.2005, 23:21
Цитата(Guest @ 20.3.2005, 14:12)
    public myType copyObject ( myType t ) {
              myType n_instance = new myType();
              n_instance.setVariable1 = t.getVariable1;
            //.....  и т.д.
            return n_instance;
    }
 
  myType A = new myType( );
  myType B = A.copyObject(A);



Это неправильный подход; и в очередной раз я вынужден попросить соблюдать соглашения об именовании в Java.

Автор: batigoal 21.3.2005, 10:43
Цитата(Guest @ 20.3.2005, 23:12)
public myType copyObject ( myType t ) {
              myType n_instance = new myType();
              n_instance.setVariable1 = t.getVariable1;
            //.....  и т.д.
            return n_instance;
    }
 

  myType A = new myType( );
  myType B = A.copyObject(A);


И чем это быстрее??? Все равно точно так же создается объект. Кроме того, это ведь и есть, по сути, метод clone.

Автор: axod 21.3.2005, 16:12
Вообще
умоляю НЕ ПЕРЕКИДЫВАЙТЕ ТЕМУ НА ДРУГОЙ ФОРУМ

дело в том что smile smile
это мне необходимо под J2ME WTK
а там нету метода clone()
и время создания ВСЕГО на вес золота

Автор: batigoal 21.3.2005, 16:28
Мне кажется, что без переопределения clone() все равно не обойтись. Как можно создать копию объекта, не создавая второй объект? Навряд ли это можно как-то ускорить.
Цитата(axod @ 21.3.2005, 16:12)
а там нету метода clone()

Значит, надо его сделать. smile

Автор: kashka 21.3.2005, 16:43
Придется тебевсе таки метод clone() самому писать иначе ни как нельзя.
В J2ME нет встроенной возможности скопировать класс, по моему.

А что у тебя так много ресурсов требуется и для какого ты телефона пишешь?

Автор: axod 21.3.2005, 19:31
тогда скажите плиз по какой схеме работает метод clone()
спасибо

Автор: Domestic Cat 21.3.2005, 19:42
http://forum.vingrad.ru/index.php?showtopic=27306&hl=clone

Автор: kashka 22.3.2005, 12:42
Берешь свой класс определяешь в нем метод clone(), в етом методе создаешь новый объект и копируешь все поля старого объекта в новый.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)