Копировать массив перечислений

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

public enum StateEnum { START, PLAY, PAUSE , STOP }
class MyClass{ StateEnum[] stateEnums; public Object clone(){ MyClass copyClass = new MyClass(); // copy enums }
}
2 ответа

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


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

MyClass copyClass = new MyClass();

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

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

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

licensed under cc by-sa 3.0 with attribution.