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();