我是协议缓冲区和探索反射方法的新手。我看到了一个 GetReflection() 方法来获取 C++ 中的反射接口,但是,我在 Java 中找不到类似的方法。有谁知道如何在 Java 中获取反射接口?
问问题
6127 次
3 回答
7
与 Protobuf-C++“反射”接口等效的 Java 只是com.google.protobuf.Message
接口。所有消息对象都实现了这一点,并且它具有getField()
通过描述符读取任意字段的方法。同样,所有构建器都实现Message.Builder
了 which hassetField()
等。与 C++ 不同,此功能不委托给单独的对象。
于 2013-10-18T23:43:52.107 回答
1
你能描述一下你为什么要这样做吗???,我知道我会考虑到这一点来定制答案
- 正如其他人所指出的,您可以在 java 中的任何类上使用反射。
- java 版本提供DynamicMessage 类。根据您尝试做的事情,您可能会发现DynamicMessage 类是您所追求的。此类允许您使用 proto 描述符读取任意协议缓冲区并通过 getField 方法等访问字段。您将需要 Proto-Descriptor 中的协议缓冲区(您可以使用 protoc 命令的 --descriptor_set_out= 参数来获取它)。
- 如果您不优化速度,protoc 命令将生成使用反射的类。
于 2013-10-18T01:13:30.803 回答