DynamoDB用のAmazonWebServices SDKforJavaを使用しています。@DynamoDBMarshallingのインターフェースで十分にしようとしています:
Class<? extends DynamoDBMarshaller<? extends Object>> marshallerClass();
列挙型を受け取るマーシャラーを作成します。
public class EnumMarshaller<T extends Enum<T>> implements DynamoDBMarshaller<T>
{
@Override
public String marshall(T getterReturnResult)
{
return getterReturnResult.toString();
}
@Override
public T unmarshall(Class<T> clazz, String obj)
{
return Enum.valueOf(clazz, obj);
}
}
問題は、自分のフィールドで注釈を使用しようとすると、それを理解できないことです。
public static enum MyEnum {BLA, BLA2}
@DynamoDBMarshalling(marshallerClass=EnumMarshaller<MyEnum>.class)
public MyEnum getStatus()
{
return status;
}
ジェネリック型で.classを呼び出すことができず、他のいくつかの試行で異なるエラーが発生しました。アマゾンの契約では不可能だと思い始めています...