你应该能够做这样的事情:
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
。我认为您需要编写一个 .proto 文件并使用protoc
after 编译它以生成 Java 绑定,然后您可以在 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())
.