Конверсия Gson не работает с типами подстановочных знаков верхней границы - PullRequest
0 голосов
/ 03 октября 2019

У меня есть нечто похожее на приведенное ниже, поскольку структура моих классов

    class RawType {
      private String name; 
    ... //getter and setter
    }

    class RawTypeSubClass extends RawType {
    private String title;
    ... //getter and setter
    }

    class A {
     List<? extends RawType> fields;   
    public A(List <?extends RawType> fields) {
    this.fields = fields
    }
    ... //getter and setter
    }

.
.
.
List<RawTypeSubClass> rawTypeSubClassFields = new ArryaList<>();

A objectA = new A(rawTypeSubClassFields );

Теперь, когда я пытаюсь вызвать

String json = new Gson().toJson(objectA);

, сгенерированный json не имеет полей из RawTypeSubClass. т. е. выходные данные не имеют поля "title".

  1. Нет ошибок компиляции / выполнения
  2. Если я отлаживаю, я вижу, что objectA имеет список полей типа RawTypeSubClass ия могу видеть значение для "заголовка" тоже.
  3. Пока я попробовал обходной путь, как показано ниже

    class B {List fields;
    public A (List fields) {this.fields = fields} ... //геттер и сеттер} ...

    List<RawTypeSubClass> rawTypeSubClassFields = new ArryaList<>();
    
     B objectB = new B(rawTypeSubClassFields );
    

Но это не изящное решение.

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