gpt4 book ai didi

java - 在 java 中调用通用 protobuffer 类的 parseFrom() 方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:09:28 27 4
gpt4 key购买 nike

我正在调用一个 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,是否有任何接口(interface)我可以在 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;
}

这是我得到的错误: Error:(68, 27) 错误:找不到符号方法 parseFrom(InputStream)

最佳答案

每个生成的 protobuf 类型都包含一个名为 PARSER 的静态成员这是 com.google.protobuf.Parser<T> 的实现界面。你的getObject方法只需要采用 Parser<T>作为参数。那么你会这样调用它:

Foo foo = getObject(Foo.PARSER);

关于java - 在 java 中调用通用 protobuffer 类的 parseFrom() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27642021/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com