2016-05-12 3 views
0
public class UserWord extends WordADT { 
    public int WORD_STATUS; 
    public int POINT_OF_WORD; 
    public int COUNT_OF_WRONG_ANSWER; 

    @Override 
    public Object getClone() throws CloneNotSupportedException { 
     return super.clone(); 
    } 
} 

И `Android - класс Клонирование не работает

Userword temp = new Userword(); 
Usertword temp2 = temp.getClone();   //this way doesn't work. 

Я не могу использовать getClone() метод. Я получаю эту ошибку. Как я могу клонировать экземпляр?

java.lang.CloneNotSupportedException: Класс UserWord не реализует Cloneable.

Исправлено: клон :() метод должен реализовать IClonable inferface

+0

положите это вместо super и попробуйте –

+0

Показать класс WordADT пожалуйста –

+0

WordADT имеет только несколько переменных int –

ответ

0

Используйте его, чтобы клонировать любой объект:

public static Object deepClone(Object object) { 
    try { 
     ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
     ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); 
     objectOutputStream.writeObject(object); 
     ByteArrayInputStream bais = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); 
     ObjectInputStream ois = new ObjectInputStream(bais); 
     return ois.readObject(); 
    } catch (Exception e) { 
     return null; 
    } 
} 

В вашем случае использования как ниже:

Usertword temp2 = (Usertword)deepClone(temp); 
+0

Почему бы не использовать встроенный метод clone? –

+0

, потому что встроенный метод clone не клонирует внутренние клонированные объекты. Я думаю, что это очень хороший способ клонировать все объекты из корня – Sayem

+0

Что заставляет вас думать, что OP хочет этого? –