如何在java中实现protobuffer类型的泛型函数?

我想实现泛型处理protobuffer类型

public <T > void Send(T s) {
    if (mode == "PUB") {
      sock.send(s.toByteArray(), 0); 
    } else if (mode == "REQ") {
      sock.send(s.toByteArray(), 0); 
      byte[] rs = sock.recv(0);
      System.out.println("recv ack " + Arrays.toString(rs));
    } else {
      System.out.println("Unknown mode " + mode);
      System.exit(1);
    }   
  }

这样好像不行,因为s.toByteArray()找不到,有没有人可以解答下?
本人c++写的多,最近在学习java,另外问一句,java是不是不能特化模板参数,比如我想指定函数参数是特定类型怎么办?

public <T extends 你说的有toByteArray的父类>

譬如

public <T extends Date> void test(T t){
t就有了Date的方法,因为是Date的子类
}

你这个方法是void你可以直接
public void send(protobuffer protobuffer)不就行了,没看到定义泛型的用处啊