The array classes all expose public clone() methods, however, so if a shallow copy of the array is sufficient then
return (ElementType[]) myArray.clone();
Makes for a nice, simple, easy to read paradigm. If "ElementType" is a primitive type then there is no distinction between shallow and deep copying, and if it is immutable then performing a deep copy would be wasteful. In some other circumstances a shallow copy is what you would want anyway (you want the receiver to be able to mutate the returned array elements with effects visible to the host object).
If you find that you really do want to make a deep copy of the array then you might want to consider whether your design can be improved; it is not necessarily so, but I wouldn't be surprised.