use*_*116 5 java reflection protocol-buffers
通常,我可以使用具有Java反射的beanutils在两个具有相同属性名称的java bean之间复制值,例如PropertyUtils.setProperty(....)
在protobuf Message中,我们使用消息构建器类来设置值。这行得通,但是我宁愿使用反射将属性从Bean自动复制到消息中,因为两者具有相同的属性名称和类型。
当我在构建器对象(从message.newBuilder()获得)上调用PropertyUtils.setProperty时,得到此消息。
java.lang.NoSuchMethodException:属性“ testProp”在类“ testsuff.TestBeanProtos $ TestBeanMessage $ Builder”中没有setter方法
如何使用Java反射将值从Java bean自动复制到protobuf消息对象(反之亦然)?
您可以抛出所有属性getClass().getFields()并使用反射进行复制。它会像这样:
for(Field f : to.getClass().getFields()){
f.set(to, from.getClass().getField(f.getName()).get(from));
}
Run Code Online (Sandbox Code Playgroud)
+可能您可能会使用field.setAccessible(true)调用。
| 归档时间: |
|
| 查看次数: |
6796 次 |
| 最近记录: |