我使用亚马逊网络服务SDK for Java的DynamoDB;试图足以@DynamoDBMarshalling接口:
I'm using Amazon Web Services SDK for Java for DynamoDB; trying to suffice the interface for @DynamoDBMarshalling:
Class<? extends DynamoDBMarshaller<? extends Object>> marshallerClass();
我建立接收任何枚举一个编组:
I build a marshaller that receives any Enum:
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);
}
}
现在的问题是,当我试图用我的现场注释我不出来:
The problem is that when I'm trying to use the annotation on my field I can't figure it out:
public static enum MyEnum {BLA, BLA2}
@DynamoDBMarshalling(marshallerClass=EnumMarshaller<MyEnum>.class)
public MyEnum getStatus()
{
return status;
}
我不能叫的.class上泛型类型和一些其他的尝试提出了不同的错误。 我开始认为这是不可能与亚马逊的合同...
I can't call .class on a generic type and some other tries came up different errors. I'm starting to think it's impossible with Amazon's contract...
以下的罚款对我说:
则Marshaller:
public class EnumMarshaller implements DynamoDBMarshaller<Enum> {
@Override
public String marshall(Enum getterReturnResult) {
return getterReturnResult.name();
}
@Override
public Enum unmarshall(Class<Enum> clazz, String obj) {
return Enum.valueOf(clazz, obj);
}
}
在我与枚举表类:
@DynamoDBMarshalling(marshallerClass=EnumMarshaller.class)
@DynamoDBAttribute(attributeName = "MyEnum")
public MyEnum getMyEnum() {
return myEnum;
}