繁体   English   中英

Java协议缓冲区-反射

[英]Java protocol buffers - reflection

我是协议缓冲区和探索反射方法的新手。 我看到了一种GetReflection()方法来获取C ++中的反射接口,但是,我在Java中找不到类似的方法。 有谁知道如何在Java中获得反射接口?

相当于Protobuf-C ++“反射”接口的Java就是com.google.protobuf.Message接口。 所有消息对象都实现了此目的,并且它具有类似getField()方法,该方法可以按描述符读取任意字段。 同样,所有构建器都实现具有setField()等的Message.Builder 与C ++不同,此功能未委托给单独的对象。

您能描述一下为什么要尝试吗?,II,我知道我会考虑这一点来定制答案

  • 正如其他人指出的那样,您可以在Java中的任何类上使用反射。
  • Java版本提供了DynamicMessage类 根据您要尝试的工作,您可能会发现DynamicMessage类是您所追求的。 此类允许您使用原型描述符读取任意的协议缓冲区并通过getField方法等访问字段。您将需要协议描述符中的协议缓冲区(您可以使用protoc命令的--descriptor_set_out =参数来获取协议缓冲区)。
  • 如果您不追求速度,那么protoc命令将生成使用反射的类。

反射接口可以在反射包中找到。 通常,将使用Class实例访问该接口。

public static void main(String[] $)
{
    Class clazz = String.class;
    System.out.println(clazz.getName()); // "java.lang.String"
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM