/** * Returns a deep copy of this group of parameter values. Included parameter values and * subgroups are cloned recursively. * * @return A copy of this group of parameter values. */ @Override public ParameterGroup clone() { final ParameterGroup copy = (ParameterGroup) super.clone(); copy.values = (ArrayList<GeneralParameterValue>) copy.values.clone(); for (int i = copy.values.size(); --i >= 0; ) { // TODO: remove cast with J2SE 1.5 copy.values.set(i, copy.values.get(i).clone()); } copy.asList = null; return copy; } }
/** * Constructs a parameter list initialized to a copy of the given one. */ ParameterValueList(final ParameterValueList other) { descriptor = other.descriptor; values = new GeneralParameterValue[size = other.size]; for (int i=0; i<size; i++) { values[i] = other.values[i].clone(); } }
/** * Constructs a parameter list initialized to a copy of the given one. */ ParameterValueList(final ParameterValueList other) { descriptor = other.descriptor; values = new GeneralParameterValue[size = other.size]; for (int i=0; i<size; i++) { values[i] = other.values[i].clone(); } }
/** * Returns a deep copy of this group of parameter values. * Included parameter values and subgroups are cloned recursively. * * @return A copy of this group of parameter values. */ @Override @SuppressWarnings("unchecked") public ParameterGroup clone() { final ParameterGroup copy = (ParameterGroup) super.clone(); try { // Set the 'provider' field using reflection, because this field is final. This is // a legal usage for cloning according Field.set(...) documentation in J2SE 1.5. final Field field = ParameterGroup.class.getDeclaredField("values"); field.setAccessible(true); field.set(copy, values.clone()); } catch (ReflectiveOperationException cause) { throw new AssertionError(cause); } for (int i=copy.values.size(); --i>=0;) { copy.values.set(i, copy.values.get(i).clone()); } copy.asList = null; return copy; } }
/** * Clones the given array of parameters. * This method invokes itself for cloning sub-arrays. */ private static Object[] clone(Object[] values) { if (values != null) { values = values.clone(); for (int i=0; i<values.length; i++) { Object element = values[i]; if (element instanceof GeneralParameterValue) { element = ((GeneralParameterValue) element).clone(); } else { element = clone((Object[]) element); } values[i] = element; } } return values; }
/** * Clones the given array of parameters. * This method invokes itself for cloning sub-arrays. */ private static Object[] clone(Object[] values) { if (values != null) { values = values.clone(); for (int i=0; i<values.length; i++) { Object element = values[i]; if (element instanceof GeneralParameterValue) { element = ((GeneralParameterValue) element).clone(); } else { element = clone((Object[]) element); } values[i] = element; } } return values; }