次のようなことができるはずです。
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.java
Person
public static final class Person extends
com.google.protobuf.GeneratedMessage
implements PersonOrBuilder {
...
}
このGeneratedMessage
クラスは、上で述べたインターフェースをAbstractMessage
実装するものから拡張されます。Message
したがって、基本的にはPerson
オブジェクトを作成でき、builder.setRequest(person.toByteString())
.