如何在 java 中查找已实现接口的所有子类



如果接口用作 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);

最新更新