Обычно я мог копировать значения между двумя java beans, которые имеют идентичные имена свойств, используя beanutils с отражением java, например. PropertyUtils.setProperty (....)Как автоматически копировать значения из java bean в объект сообщения protobuf с использованием java-отражения?
В сообщении protobuf Message мы используем класс построителя сообщений для установки значения. Это работает, но я предпочел бы использовать отражение, чтобы автоматически копировать свойства из bean-компонента в сообщение, поскольку оба имеют одинаковые имена и типы свойств.
Когда я вызываю PropertyUtils.setProperty в объект-конструктор (полученный из message.newBuilder()), я получаю это сообщение.
java.lang.NoSuchMethodException: свойство «testProp» не имеет метод установки в классе «класса teststuff.TestBeanProtos $ TestBeanMessage $ Builder»
Как автоматически копировать значения из Java Bean для Protobuf объекта сообщения (и тиски -versa) с использованием java-отражения?
Do Builder имеет метод setTestProp? –
Я должен указать, что целевой Java-объект является экземпляром com.google.protobuf.GeneratedMessage, которые являются неизменяемыми компонентами. Поэтому использование Dozer или простое чтение/запись отражения в GeneratedMessage не будет работать. – user193116