如果接口用作 DynamoDBTypeConverter 的类型参数,如何使用实现的接口获取子类对象。例如 DynamoDBTypeConverter (。
public enum state implements EnumInterface{
CREATED("0");
}
public enum color implements EnumInterface{
GREEN("0");
}
public interface EnumInterface{
void getStatus();
}
public class DynamoDbEnumConverter implements DynamoDBTypeConvereter<String,EnumInterface>{
public EnumInterface unconvert(String value){
// find Object run time, EnumInterface represent color or stat
}
}
获取枚举接口在取消转换方法中表示颜色还是状态。
查看此页面: 什么是化泛型?他们如何解决类型擦除问题,为什么如果不进行重大更改就不能添加它们?
泛型在 Java 中被擦除。
要让你的代码在不被黑客入侵的情况下工作的唯一方法是为每个EnumInterface
提供一个DynamoDbEnumConverter
实例:
class DynamoDbEnumConverter<T extends Enum<T> & EnumInterface> implements DynamoDBTypeConvereter<String, T> {
private Class<T> enumType;
public DynamoDbEnumConverter(Class<T> enumType) {
this.enumType = enumType;
}
public EnumInterface unconvert(String value) {
return Enum.valueOf(enumType, value);
}
}
然后:
DynamoDbEnumConverter<Color> colorConverter = new DynamoDbEnumConverter<>(Color.class);