Как найти все подклассы реализованного интерфейса в Java? - PullRequest
0 голосов
/ 01 апреля 2019

Как получить объект Subclass, используя реализованный интерфейс, если интерфейс используется в качестве параметра типа для 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
    }
}

Получите, представляет ли интерфейс Enum цвет или состояние в неконвертированном методе.

1 Ответ

0 голосов
/ 01 апреля 2019

Проверьте эту страницу: Что такое Reified Generics?Как они решают проблемы стирания типа и почему их нельзя добавить без серьезных изменений?

Дженерики стерты в Java.

Единственный способ, которым вызаставить ваш код работать без взлома, предоставив один экземпляр DynamoDbEnumConverter для каждого EnumInterface:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...