package joist.converter; import joist.util.ConstructorTypeParameter; public abstract class AbstractConverter<T, U> implements Converter<T, U> { private final Class<T> one; private final Class<U> two; protected ConverterRegistry registry; protected AbstractConverter() { this.one = (Class<T>) ConstructorTypeParameter.of(this).param(AbstractConverter.class, 0).param(AbstractOneWayConverter.class, 0).resolve(); this.two = (Class<U>) ConstructorTypeParameter.of(this).param(AbstractConverter.class, 1).param(AbstractOneWayConverter.class, 1).resolve(); } public Class<T> getTypeOne() { return this.one; } public Class<U> getTypeTwo() { return this.two; } public void setConverterRegistry(ConverterRegistry registry) { this.registry = registry; } }