gpt4 book ai didi

java - Java中如何避免方法重载以避免重复?

转载 作者:行者123 更新时间:2023-11-30 06:03:31 25 4
gpt4 key购买 nike

我有 2 种方法,它们执行 80% 相同的工作,但结果处理不同。我正在做:

 private <T> T getResponse(final RestURI query, final Class<T> responseClass) throws IOException {
T response = null;

final RestResponse<Record> tempResponse = getResponseFromDataPath(query);

if (isResponseOK(tempResponse, query)) {
final CustomReader reader = createCustomReaderFromResponse(tempResponse);
response = objectMapper.readValue(reader, responseClass);
^
// DIFFERENCE --------------------------------|
}

return response;
}

private <T> T getResponse(final RestURI query, final TypeReference valueTypeRef) throws IOException {
T response = null;

final RestResponse<Record> tempResponse = getResponseFromDataPath(query);

if (isResponseOK(tempResponse, query)) {
final CustomReader reader = createCustomReaderFromResponse(tempResponse);
response = objectMapper.readValue(reader, valueTypeRef);
^
// DIFFERENCE --------------------------------|
}

return response;
}

这看起来有很多重复。我该如何做才能减少重复项。

最佳答案

您可以使用调用objectMapperBiFunction参数:

private <T> T getResponse(final RestURI query, 
final BiFunction<CustomReader, ObjectMapper, T> mapper) throws IOException {
T response = null;

final RestResponse<Record> tempResponse = getResponseFromDataPath(query);

if (isResponseOK(tempResponse, query)) {
final CustomReader reader = createCustomReaderFromResponse(tempResponse);
response = mapper.apply(reader, objectMapper);
}

return response;
}

调用者可以选择如何调用objectMapper:

getResponse(query, 
(reader, objectMapper) -> objectMapper.readValue(reader, <valueTypeRef>);

或者:

getResponse(query, 
(reader, objectMapper) -> objectMapper.readValue(reader, <class>);

关于java - Java中如何避免方法重载以避免重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51980568/

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