【发布时间】:2014-12-24 20:46:35
【问题描述】:
我正在调用一个 api 来获取一个输入流,然后调用静态方法 parseFrom(inputstream) 将其转换为 protobuffclass。
如果我使用特定的课程,它会起作用:
public CustomerDTOOuterClass.CustomerDTO GetCustomer()
{
CustomerDTOOuterClass.CustomerDTO customer = null;
try
{
URL url = new URL("https://localhost:44302/Api/customer/1?");
HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-Type", "application/x-protobuf");
conn.connect();
InputStream is = conn.getInputStream();
CustomerDTOOuterClass.CustomerDTO customer =
CustomerDTOOuterClass.CustomerDTO.parseFrom(is);
conn.disconnect();
}
catch(Exception ex)
{
System.out.println("[ "+ex.getMessage()+" ]");
}
return customer;
}
但是如果我将它更改为泛型类型它会失败,因为 T 没有方法 parseFrom,我可以在 T 中实现任何接口以便我可以调用 parseFrom 方法吗?
public T GetObject()
{
T object = null;
try
{
URL url = new URL("https://localhost:44302/Api/customer/1?");
HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-Type", "application/x-protobuf");
conn.connect();
InputStream is = conn.getInputStream();
T object = T.parseFrom(is);
conn.disconnect();
}
catch(Exception ex)
{
System.out.println("[ "+ex.getMessage()+" ]");
}
return object;
}
这是我得到的错误: 错误:(68, 27) 错误:找不到符号方法 parseFrom(InputStream)
【问题讨论】:
-
通过快速搜索找到两件事情,也许一件有帮助:stackoverflow.com/questions/4035027/… 和 transylvania-jug.org/archives/365
-
你能告诉我们你想要达到的目标吗?如果您的处理非常通用,您可以查看 DynamicMessage。或者,您可以将 Builder 类传递给 getObject() 方法并使用 builder 类的 mergeFrom 方法
-
你真的不能这样做吗?序列化的原型不知道自己的类型。
标签: java generics protocol-buffers