簡體   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