Проблема, с которой вы столкнулись при использовании первого метода, заключается в следующем:
Superstar edited = editSuperstar(originalSuperstar);
Это также изменит оригинал Superper, который, на мой взгляд, нелогичен ...
Таким образом, предпочитайте второй, если вы изменяете переданный объект, или первый, если вы возвращаете новую копию объекта.
Для этого специфического примера вы можете просто добавить метод редактирования в класс Superstar ...