Сопоставление двух одинаковых классов в java со сторонней библиотекой

Мне нужно преобразовать один объект в другой. Объект вложен во многие внутренние объекты. Но как исходный, так и конечный объекты идентичны по типу данных, имени переменной, имени класса и т. д. Есть ли какой-либо эффективный инструмент для этого с меньшим количеством кодирования.

Я пробовал orika, но ожидал определения, как показано ниже.

factory.registerClassMap(factory
                .classMap

со всеми полями и внутренними объектными полями. В итоге я получил множество итераторов и настроек сопоставления полей.

Помогите мне или направьте меня Есть ли другой способ сопоставить объекты с идентичными объектами.


person Rithik_Star    schedule 07.06.2016    source источник
comment
если я правильно понимаю вашу проблему, вы хотите клонировать объект с внутренними ссылками, вы можете попробовать Apache commons или проверить здесь ответы, иначе вам придется реализовать собственный метод DeepCopy   -  person AntJavaDev    schedule 07.06.2016
comment
Нет, я не хочу клонировать объект. У меня есть POJO и JAXB, которые идентичны. Мне нужно установить значение из POJO в JAXB.   -  person Rithik_Star    schedule 07.06.2016
comment
хорошо, тогда у вас есть объект pojo, и вы клонируете его в объект JAXB, если они идентичны, как вы говорите, и изменяется только имя пакета   -  person AntJavaDev    schedule 07.06.2016


Ответы (2)


Вы можете взглянуть на MapStruct.

Другой альтернативой является Dozer. Классы могут быть отображены 1 на 1, определив в файле mapper xml атрибут wildcard="true". Это означает, что он автоматически попытается сопоставить каждое свойство двух объектов. Когда для атрибута установлено значение false, он будет отображать только явно определенные поля.

<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns="http://dozer.sourceforge.net"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://dozer.sourceforge.net
          http://dozer.sourceforge.net/schema/beanmapping.xsd">

    <mapping wildcard="true"> 
        <class-a>org.example.ObjectA</class-a>
        <class-b>org.example.ObjectB</class-b>   
    </mapping> 
</mappings>
person uniknow    schedule 07.06.2016
comment
есть ли пример для сопоставления двух идентичных объектов с помощью Mapstruct - person Rithik_Star; 07.06.2016
comment
Включена другая структура сопоставления, в которой сопоставление 1 на 1 почти сделано из коробки. - person uniknow; 07.06.2016
comment
извините, я не использую XML-файл в своем приложении Spring Servlet 3 - person Rithik_Star; 07.06.2016
comment
Файл специфичен для бульдозера и не имеет отношения к пружине. Он должен быть взят из пути к классам самим фреймвордом. - person uniknow; 07.06.2016
comment
Ответ можно обобщить, чтобы использовать любой доступный сопоставитель компонентов: stackoverflow.com/questions/1432764/ - person tkruse; 15.01.2018

Лучше использовать подходящую библиотеку клонирования, проверьте эту http://blog.jadira.co.uk/blog/2013/6/25/announcing-jadira-cloning.html

person Sidi    schedule 07.06.2016