Ich verwende Amazon Web Services SDK für Java für DynamoDB; versucht, die Schnittstelle für @DynamoDBMarshalling zu genügen:Erstellen eines allgemeinen DynamoDBMarshalling für Enums
Class<? extends DynamoDBMarshaller<? extends Object>> marshallerClass();
ich einen Einweiser bauen, die jede Enum erhält:
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);
}
}
Das Problem ist, dass, wenn ich versuche, die Anmerkung auf meinem Feld zu verwenden, kann ich ‚t es herauszufinden:
public static enum MyEnum {BLA, BLA2}
@DynamoDBMarshalling(marshallerClass=EnumMarshaller<MyEnum>.class)
public MyEnum getStatus()
{
return status;
}
ich nicht .class- auf einem generischen Typ nennen kann und einige andere Versuche kamen verschiedene Fehler auf. Ich beginne mit Amazon Vertrag, es ist unmöglich zu denken ...
erstellen, während dieser Ansatz einige Warnungen (sowohl RawTypes und Typ Sicherheit), es funktioniert. –
Leider kann ich diese Klasse als 'marshaller.unmarshall (MyEnum.class, MyEnum.SOMETHING)' nicht kompilieren. Erforderliche Klasse als 1. Param. –
GuiSim
Ab Version 1.10.59 bietet die 'aws-java-sdk' nun einen [' AbstractEnumMarshaller'] (https://github.com/aws/aws-sdk-java/blob/199fba92dd0cdf4133f4aa5b08cfc10a11c27b31/aws-java-sdk -dynamodb/src/main/java/com/amazonaws/services/dynamodbv2/datamodeling/AbstractEnumMarshaller.java) Klasse, die eine robustere Version dieser Antwort ist. – cyfur01