By the looks of it - BeanUtils.copyProperties seems to create a clone of an object. If this is the case, and what with the concerns around implementing the Clon
clone creates a shallow copy of the object, the clone object is always of the same class as the original one. All fields, private or not are copied.
BeanUtils.copyProperties API Copy property values from the origin bean to the destination bean for all cases where the property names are the same.
As to me, these two concepts have little in common.