我正在尝试反序列化 Java 中的 protobuf 消息,其中在运行时仅给出相应消息的 Class 对象。我有一个使用反射的解决方案,但我不知道这是否是最好的也是唯一的方法:
byte[] msgData = ...;
Class<? extends Message> msgClass = ...; // this is known
Message msg = (Message) msgClass.getMethod("getDefaultInstanceForType").invoke(msgClass.getConstructor().newInstance());
msg = msg.toBuilder().mergeFrom(msgData).build();