Che*_*rel 12 java generics annotations amazon-web-services amazon-dynamodb
我正在使用Amazon Web Services SDK for Java for DynamoDB; 试图满足@DynamoDBMarshalling的界面:
Class<? extends DynamoDBMarshaller<? extends Object>> marshallerClass();
Run Code Online (Sandbox Code Playgroud)
我建立了一个接收任何枚举的编组:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我试图在我的字段上使用注释时,我无法弄清楚:
public static enum MyEnum {BLA, BLA2}
@DynamoDBMarshalling(marshallerClass=EnumMarshaller<MyEnum>.class)
public MyEnum getStatus()
{
return status;
}
Run Code Online (Sandbox Code Playgroud)
我无法在泛型类型上调用.class,而其他一些尝试则出现了不同的错误.亚马逊的合同我开始认为这是不可能的......
Tia*_*nça 16
以下对我来说很好:
马歇尔:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的带有枚举的表类中:
@DynamoDBMarshalling(marshallerClass=EnumMarshaller.class)
@DynamoDBAttribute(attributeName = "MyEnum")
public MyEnum getMyEnum() {
return myEnum;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4962 次 |
| 最近记录: |