Сохранить неизвестный общий c тип в коллекцию и восстановить указанный c тип - PullRequest
0 голосов
/ 07 мая 2020

Я новичок в дженериках в Java.

Мне нужно сохранить различные экземпляры generi c class GameRule<T> со значениями типа T в коллекцию для последующего массового использования в методе с подписью:

public <T> void applyGameRule(GameRule<T>, T value)

Как я могу это сделать?

Я пробовал сделать такую ​​оболочку:

public class GameRuleHolder {

private Object gameRule;
private String gameRuleType;
private Object value;
private String valueType;

public <T> GameRuleHolder(GameRule<T> gameRule, T value) {
    this.gameRule = gameRule;
    this.gameRuleType = gameRule.getClass().getName();
    this.value = value;
    this.valueType = value.getClass().getName();
}
// getters, setters ...

Я сохранил GameRules в этой оболочке и сохранил их в Set.

, но когда я пытаюсь вызвать необходимый метод, например:

setGameRule(Class.forName(gameRule.getGameRuleType()).cast(gameRule.getGameRule()), Class.forName(gameRule.getValueType()).cast(gameRule.getValue()));

, я получаю эту ошибку в IDE:

IntelliJ IDEA

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...