Posts Tagged ‘动态反射’

Protobuf 动态反射填充机制(JAVA)

星期四, 十月 23rd, 2014 711 views

利用此方案可进行自动化Protobuf的功能拓展,核心代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
com.google.protobuf.GeneratedMessage.Builder builder;
Object object;

/* 遍历protobuf builder体 取出字段 */
for (int i = 0; i < builder.getDescriptorForType().getFields().size(); i++) {

    FieldDescriptor pf = builder.getDescriptorForType().getFields().get(i);// 获取proto字段
    Field f = object.getClass().getDeclaredField(pf.getName());// 获取同名成员变量
    Method m = object.getClass().getMethod("get" + f.getName());// 获取该成员变量的get方法
    Object value = m.invoke(object);
    builder.setField(pf, value);

}

builder.build();

明者自明,不做过多解释了,本篇到此,谢谢关注。

BeiTown
2014-10-23