次のようなことができるはずです。
private HadoopRpcRequestProto constructRpcRequest(Method method, Object paramObj) {
HadoopRpcRequestProto rpcRequest;
HadoopRpcRequestProto.Builder builder = HadoopRpcRequestProto
.newBuilder();
builder.setMethodName(method.getName());
Message param = (Message) paramObj;
builder.setRequest(param.toByteString());
rpcRequest = builder.build();
return rpcRequest;
}
Message私たちが話しているクラスのためにcom.google.protobuf.Message。Javaバインディングを生成するには、.protoファイルを作成してコンパイルする必要があると思いますprotoc。その後、Javaコードで使用できます。たとえば、.proto ファイルは次のようになります。
message Person {
required int32 id = 1;
required string name = 2;
optional string email = 3;
}
そして、これを行うと、次のような内部クラスを持つprotoc myperson.protoクラスが生成されます。MyPerson.javaPerson
public static final class Person extends
com.google.protobuf.GeneratedMessage
implements PersonOrBuilder {
...
}
このGeneratedMessageクラスは、上で述べたインターフェースをAbstractMessage実装するものから拡張されます。Messageしたがって、基本的にはPersonオブジェクトを作成でき、builder.setRequest(person.toByteString()).