我怎样才能使泛型函数的参数作为java中的protobuffer?

时间:2019-12-04 01:42:46

标签: java generics protocol-buffers generic-programming

我想制作一个函数来处理不同类型的协议缓冲区变量,所有这些都需要调用protobuffer的api函数。像这样的代码:

num_fans

那对我没有用,找不到bc s.toByteArray()和T.parseFrom(),有人可以帮忙吗? 我是一名c ++开发人员,最近学习Java,Java是否可以支持通用函数,并根据我的函数声明处理通用参数? 谢谢

1 个答案:

答案 0 :(得分:1)

您生成的所有protobuf类都扩展了类型com.google.protobuf.GeneratedMessage,并且该类型具有方法toByteArray(它是从com.google.protobuf.AbstractMessageLite继承的)

只需将您的方法声明为:

public void Send(com.google.protobuf.GeneratedMessage s) {

public void Send(com.google.protobuf.AbstractMessageLite s) {

您不需要泛型-您可以依赖继承类型层次结构。

也请注意:在Java中,请勿像在已发布的代码中那样将字符串与==进行比较。请改用equals方法;如果这些字符串具有相同的内容但是==类的不同实例,则String返回false。