Только 1-й подход удовлетворяет первому условию для сохранять плавную анимацию . Вызов reloadData
сразу после deleteRows
прерывает анимацию.
И вызов indexPath(for: cell)
, безусловно, дешевле, чем перезагрузка всего табличного представления.
Думаю, если вы посмотрите исходный код BeanUtils, он покажет вам, как это сделать, фактически не используя BeanUtils.
Если вы просто хотите создать копию POJO ( не совсем то же самое, что копирование свойств из одного POJO в другой), вы можете изменить исходный компонент для реализации метода clone () и интерфейса Cloneable.
Там нет простого способа сделать это. Библиотеки компонентов Introspector и Java монолитны - BeanUtils представляет собой простую оболочку для этого и хорошо работает. Отсутствие библиотек просто для того, чтобы не иметь библиотек, в целом является плохой идеей - есть причина, по которой это обычное дело для начала - общая функциональность, которая должна существовать в Java, но не существует.
Взгляните на API JavaBeans , в частности, класс Introspector . Вы можете использовать метаданные BeanInfo для получить и установить свойства . Хорошая идея - прочитать спецификацию JavaBeans , если вы еще этого не сделали. Это также помогает иметь поверхностное знакомство с API отражения .