簡體   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