ある種のConverter-Mapperが必要ですが、特別なコンバーターを使用して列挙型を簡単にアタッチする方法について、良いアイデアは思いつきません。私は次のことを試しました:
//ConverterInterface:
public interface PropertyConverter<T>
{
public String convertObjectToString( T object );
public T convertStringToObject( String string );
}
//Concrete Converter
public class FooConverter implements PropertyConverter<Foo>
{
@Override
public String convertObjectToString( Foo object )
{
throw new UnsupportedOperationException( "Not implemented yet." );
}
@Override
public Foo convertStringToObject( String string )
{
throw new UnsupportedOperationException( "Not implemented yet." );
}
}
//Dataclass
public class Foo
{
}
同じことがBooにも当てはまります。ここでは、コンバーターを特定のタイプに接続する列挙型を示します。
public enum PropEnum
{
BOO(new BooConverter()),
FOO(new FooConverter());
PropertyConverter<?> converter;
private PropEnum( PropertyConverter<?> converter )
{
this.converter = converter;
}
public PropertyConverter<?> getConverter()
{
return converter;
}
}
しかし、私のPropertyConverterはワイルドカードを使用しているため、次のように使用すると、FooToStringやStringToFooなどの具体的な型ではなく、ObjectToStringメソッドとStringToObjectメソッドしか取得できません。
コンバーターの実装から具体的なタイプを受け取る方法はありますか?