скопировать массив перечислений - PullRequest
1 голос
/ 14 января 2012

Привет, у меня есть массив enum, и это поле моего класса.И я реализую метод клонирования этого класса.Но у меня есть некоторые идеи о копировании массива перечислений, но каков формальный способ копирования массива перечислений?

   public enum StateEnum {
      START, PLAY, PAUSE , STOP
   }


class MyClass{
    StateEnum[] stateEnums;

    public Object clone(){
      MyClass copyClass = new MyClass();
      // copy enums
    }
}

Ответы [ 2 ]

4 голосов
/ 14 января 2012

Перечисляемые значения являются (или должны быть) неизменяемыми, поэтому вам не нужно их копировать.
Вы можете просто сделать поверхностную копию массива, вызвав System.arraycopy().

1 голос
/ 14 января 2012

Как сказал SLaks, используйте System.arraycopy для клонирования вашего массива. Далее

MyClass copyClass = new MyClass();

следует заменить на

MyClass copyClass = (MyClass)super.clone();

Причина этого объяснена в этой статье во всех подробностях, где в конце страницы 2 обсуждаются распространенные ошибки при реализации clone метода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...