gpt4 book ai didi

java - 在 Java 11 中重构使用不同对象的资源的尝试

转载 作者:行者123 更新时间:2023-12-01 19:12:14 27 4
gpt4 key购买 nike

我的代码变得有点繁重,我想重构我的代码并使其更易于维护。我在代码的 4 个部分中使用了 2 个 try catch 来处理资源,它们看起来确实非常相似。

我的目标是调用服务:

这是重复的代码块:

try(OutputStream os = con.getOutputStream()) {
byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
os.write(input, 0, input.length);
}

try(BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), StandardCharsets.UTF_8))) {
StringBuilder response = new StringBuilder();
String responseLine;
while ((responseLine = br.readLine()) != null) {
response.append(responseLine.trim());
}
System.out.println(response.toString());
returnValue = gson.fromJson(response.toString(), GetSourceFileRestResponseModel.class);
System.out.println(returnValue);
}

我的问题是“returnValue”可以是非常不同的不同类型的对象。

GetSourceFileRestResponseModel returnValue = new GetSourceFileRestResponseModel();

UpdateSourceFileRequestModel returnValue = new UpdateSourceFileRequestModel();

显然,如果我很好地理解我编写的代码,我的目标是输入一个对象并检索字符串作为结果:))

最佳答案

使用Java泛型,例如,你定义一个类

public class GenericJson <T>{
public T returnJsnoValue(){
T returnValue = null;
try(BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), StandardCharsets.UTF_8))) {
StringBuilder response = new StringBuilder();
String responseLine;
while ((responseLine = br.readLine()) != null) {
response.append(responseLine.trim());
}
System.out.println(response.toString());
returnValue = gson.fromJson(response.toString(),T.class);
System.out.println(returnValue);
}
}
}

我不知道您的其余代码是什么样子,但更新您的问题以便能够为您提供更多帮助

关于java - 在 Java 11 中重构使用不同对象的资源的尝试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59466305/

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