繁体   English   中英

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

[英]How to find all sub classes of implemented interface in 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
    }
}

在 unconvert 方法中获取 Enum 接口是代表颜色还是状态。

查看此页面: 什么是 Reified 泛型? 它们如何解决类型擦除问题,为什么不进行重大更改就不能添加它们?

泛型在 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM