У меня есть требование, когда мне нужно написать собственный XStream MapConverter, который просто конвертирует карту определенного типа. Чтобы привести пример, я бы хотел, чтобы мой пользовательский конвертер просто работал с картами Map (String, Date). Мне нужно добиться этого путем переопределения метода canConvert. На данный момент это метод canConvert, который я написал:
@Override
public boolean canConvert(Class clazz) {
return (!clazz.equals(Object.class) && Map.class.isAssignableFrom(clazz));
}
Но это будет работать для всех типов карт. Поскольку «java.lang.Class» не предоставляет какой-либо метод, который дает информацию о типе параметров, для универсальных коллекций я не могу достичь желаемого результата в моем методе canConvert.
Один из возможных способов решения этой проблемы - создание фиктивного класса-обертки вокруг Map (String, Date) и его использование для реализации метода canConvert. Может ли кто-нибудь предложить лучший способ решения этой проблемы в методе canConvert?