Всем привет!
У конфигурации hocon есть один недостаток и я не знаю как его обойти. Заключается он в том, что для сериализации объекта, ему нужно предоставить токен (TypeToken), иначе он выкинет ошибку (java.lang.IllegalArgumentException: Configuration does not accept objects of type class). Например, я не могу написать так
class TestA {}
ConfigurationNode node = ...
node.setValue(new TestA());
Такое я мог написать в gson. gson нашел бы нужный сериалайзер и сериализировал объект.
Я начал экспериментировать и попытался написал такой код
TypeToken<? extends TestA> token = TypeToken.of(test.getClass());
node.setValue(token, test);
И даже такой
TypeToken<? extends TestA> token = TypeToken.of(test.getClass());
node.setValue(token, test.getClass().cast(test));
Он IDE не хочет такое принимать. Вы можете спросить: "Зачем тебе это??", вот и ответ
// Есть несколько классов, которые наследуют друг друга
class TestA {}
class TestB extends TestA {}
class TestC extends TestB {}
// Так же есть сериалайзеры для каждого класса (TestA, TestB, TestC)
// Например, я сериализирую массив объектов
Collection<? extends TestA> elements = ...
// Я не знаю какой там класс, но они должны сериализироваться своим сериализатором...
// Я мог бы проверять каждый элемент через instanceof, но потом добавлю новый класс
class TestD extends TestA {}
// и могу забыть добавить проверку на instanceof, а потом думать, почему не работает???
Есть какие предложения, как просто и легко решить данную проблему?