【发布时间】:2020-02-06 07:30:33
【问题描述】:
我正在编写一个处理两个原始消息的程序,我需要处理从不同来源发送的字节 [] 发送 foo 消息或 bar 消息。由于我无法确定它属于哪条消息,因此我使用 Any Class(与 protobuf 一起提供)来解析字节数组并 查找它属于哪个类,但遇到编译时错误。有没有其他方法可以用来检测我将来是否添加了更多的 proto 消息类?
//Foo.proto
syntax = "proto3";
option java_outer_classname = "FooProto";
message Foo {
int32 a = 1;
}
和第二个原型
//Bar.proto
syntax = "proto3";
option java_outer_classname = "BarProto";
message Bar {
int32 b = 1;
}
代码:
Any anyEvent = Any.parseFrom(protoBytes);
if (any.is(Foo.class)
{
Foo foo = any.unpack(Foo.class);
...
} else {
Bar bar = any.unpack(Bar.class);
...
}
尝试调用 any.is() 时 if 语句出错:
Any类型中的方法is(Class
)不适用于参数(Class )
【问题讨论】:
标签: java protocol-buffers proto