我想制作一个函数来处理不同类型的协议缓冲区变量,所有这些都需要调用protobuffer的api函数。像这样的代码:
num_fans
那对我没有用,找不到bc s.toByteArray()和T.parseFrom(),有人可以帮忙吗? 我是一名c ++开发人员,最近学习Java,Java是否可以支持通用函数,并根据我的函数声明处理通用参数? 谢谢
答案 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。