Джексон: есть ли способ использовать @JsonTypeInfo с @JsonCreator в качестве фабрики? - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть абстрактный класс, который использует

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "Type", visible = true)

и

@JsonSubTypes({
        @JsonSubTypes.Type(value = ONE.class, name = "ONE"),
        @JsonSubTypes.Type(value = TWO.class, name = "TWO")})
abstract class ZERO {....}

чтобы создать правильный класс.
это прекрасно работает, однако теперь у меня есть новый класс (назовем его ТРИ), который является своего рода заполнителем для другого класса. так скажем, я получаю что-то вроде этого:

class THREE {
String ID;
}

У меня также есть карта этого класса для некоторых конкретных классов, так что этот идентификатор фактически говорит о том, что он должен взять класс из карты

Map<String, ZERO> map

Я хотел сделать что-то подобное

class THREE_FACTORY{
    @JsonCreator
    public static ZERO create(@JsonProperty("ID") id){
        return map.get(id);
    }
}

но с подтипами это не очень хорошо.

У вас есть способ достичь этого? используя то, что я сказал, или другие методы, о которых я не думал?

ключевое значение здесь заключается в том, что список класса ZERO вообще не должен содержать три класса, а заменять их, я не хочу некоторый класс-обертку ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...