Общий тип для статического метода - PullRequest
1 голос
/ 23 сентября 2019

Можно ли сделать статический метод toObject универсальным, передав класс T и возвращая тип T?

public class JsonUtil {

    private JsonUtil() {

    }

    public static Object toObject(String jsonString, Class clazz, boolean unwrapRootValue) throws TechnicalException {
        ObjectMapper mapper = new ObjectMapper();
        mapper.writerWithDefaultPrettyPrinter();
        if (unwrapRootValue) mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
        try {
            return mapper.readValue(jsonString, clazz);
        } catch (IOException e) {
            throw new TechnicalException("Exception while converting JSON to Object", e);
        }
    }
}

Ответы [ 2 ]

3 голосов
/ 23 сентября 2019

Конечно.Просто укажите параметр общего типа в самом методе и используйте его как для типа возвращаемого значения, так и для параметра clazz:

public static <T> T toObject(String jsonString, Class<T> clazz,
        boolean unwrapRootValue) throws TechnicalException {

    /* ... */
}
2 голосов
/ 23 сентября 2019
public class JsonUtil {

    private JsonUtil() {

    }

    public static <T> T toObject(String jsonString, Class<? extends T> clazz, boolean unwrapRootValue) throws TechnicalException {
        ObjectMapper mapper = new ObjectMapper();
        mapper.writerWithDefaultPrettyPrinter();
        if (unwrapRootValue) mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
        try {
            return mapper.readValue(jsonString, clazz);
        } catch (IOException e) {
            throw new TechnicalException("Exception while converting JSON to Object", e);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...