Estoy usando Amazon Web Services SDK para Java para DynamoDB; tratando de ser suficiente la interfaz para @DynamoDBMarshalling:Creando un DynamoDBMarshalling general para enums
Class<? extends DynamoDBMarshaller<? extends Object>> marshallerClass();
construyo un contador de referencias que recibe cualquier enumeración:
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);
}
}
El problema es que cuando estoy tratando de utilizar la anotación en mi campo de lo posible 't averiguarlo:
public static enum MyEnum {BLA, BLA2}
@DynamoDBMarshalling(marshallerClass=EnumMarshaller<MyEnum>.class)
public MyEnum getStatus()
{
return status;
}
no puedo llamar .class en un tipo genérico y algunos otros intentos ocurrió diferentes errores. estoy empezando a pensar que es imposible con un contrato de Amazon ...
, mientras que este enfoque genera algunas advertencias (tanto RawTypes como type safety), funciona. –
Tristemente no puedo probar esta clase como 'marshaller.unmarshall (MyEnum.class, MyEnum.SOMETHING)' no compila esta clase. Clase Obligatoria como primer param. –
GuiSim
A partir de la versión 1.10.59, el 'aws-java-sdk' ahora proporciona un [' AbstractEnumMarshaller'] (https://github.com/aws/aws-sdk-java/blob/199fba92dd0cdf4133f4aa5b08cfc10a11c27b31/aws-java-sdk -dynamodb/src/main/java/com/amazonaws/services/dynamodbv2/datamodeling/AbstractEnumMarshaller.java) clase que es una versión más robusta de esta respuesta. – cyfur01