2015-02-18 3 views
-1

Я пытаюсь сделать DBManager, чтобы разрешить соединения с БД, так что вот контекст.как клонировать объект java

У меня есть abstract class Entitie, который имеет структуру для каждого entitie в БД, важные вещи, в данном случае имя таблицы, идентификатор и абстрактный метод (setContentValues), которые получают значения из Cursor и положить их в переменных (метод является абстрактным, поскольку переменные изменяются в зависимости от того, что такое entitie).

В DBManager у меня есть метод getAll, я передаю dummyEntitie, который имеет только id и, очевидно, класс по умолчанию имеет имя таблицы.

Итак, я пытаюсь построить arraylist того же класса, что и метод. Итак, у меня есть идея, чтобы клонировать dummyEntitie, позвоните setContentValues и добавьте его в arraylist. Но каждый раз, когда я пытался вызвать метод .clone, у меня есть ошибка в IDE, поэтому я не знаю, что не так, или как клонировать объект.

Вот код:

public ArrayList<Entitie> getAll(Entitie dummyEntitie){ 
    ArrayList<Entitie> entities = new ArrayList<Entitie>(); 

    String selectQuery = "SELECT * FROM " + dummyEntitie.getTableName(); // Select All Query 

    db = getWritableDb(); 

    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      try { 
       dummyEntitie = dummyEntitie.clone(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      dummyEntitie.setID(Integer.parseInt(cursor.getString(0))); 
      dummyEntitie.setContentValues(cursor); 
      entities.add(dummyEntitie); 
     } while (cursor.moveToNext()); 
    } 

    // return contact list 
    return entities; 
} 
+0

Сделайте свой ** Абстрактный класс Entitie ** ** cloneable **, реализуя его. поэтому весь ** детский класс ** ** Entitie ** также будет ** клонироваться **. – Prashant

ответ

0

Вы должны указать в своем классе, что он реализует интерфейс Cloneable, и вы должны переопределить метод clone внутри этого класса. По умолчанию он будет использовать метод clone класса Object.

0

ли вы реализовать Cloneable интерфейс?

Смежные вопросы