Использование переменных в типах классов

#java

Вопрос:

Я немного сбит с толку тем, как все это должно работать. Я пытаюсь создать объект, который может иметь неограниченное количество полей, имеющих разные/динамические типы (поэтому я заранее не знаю, какие они типы).

У меня первый класс ConditionParamField<T> , и я думаю, что этот вроде как в порядке. Он представляет ключ:значение, которое будет сохранено в файле

 public class ConditionParamField<T> {
    private final String name;
    private final T value;

    public ConditionParamField(String name, T value) {
        this.name = name;
        this.value = value;
    }

    public String getName() {
        return name;
    }

    public T getValue() {
        return value;
    }
}
 

Тогда у меня ConditionRule есть . Он вытягивается Rule из упаковки jeasy. Основная идея состоит в том, чтобы просто иметь карту ключа:тип, который будет указывать, какие ключи необходимы и каким должен быть их тип. Моя идея заключалась бы в том, что <?> здесь будет заполнено, где T находится в классе до ( ConditionParamField<T> )

 public interface ConditionRule extends Rule {
    /**
     * Request values that need to be filled in by the user
     */
    HashMap<String, Class<?>> getNeededValues();
}
 

Эти 2 объединяются в простом классе менеджеров. Моя идея заключалась бы в том, чтобы отобразить необходимые поля и создать свои ConditionParamField экземпляры:

 ArrayList<ConditionParamField<?>> conditionParamFields = new ArrayList<>();
            HashMap<String, Class<?>> neededValues = conditionRule.getNeededValues();

            for (String field : neededValues.keySet()) {
                Class<?> clazz = neededValues.get(field).getClass();
                ConditionParamField<clazz> conditionParamField = new ConditionParamField<>(field, null);
            }
 

Очевидно, я делаю что-то не так, но я не знаю, что именно. Я не очень хорошо знаком с дженериками или как там это <?> называется.
Я надеюсь, вы понимаете, чего я пытаюсь достичь.

Основная проблема здесь в том, что я получаю ошибку «Класс неизвестен» для ConditionParamField<clazz> . Похоже, он не принимает переменную, или, может быть, это вообще невозможно сделать, я не уверен.

Моей конечной основной целью будет показать пользователю ввод, который будет принимать только тот тип поля, который был (целое число, строка,…)

Комментарии:

1. Не могли бы вы уточнить, о чем вы здесь спрашиваете? В чем проблема?

2. Я получаю ошибку «Неизвестный класс clazz» из моей среды разработки для ConditionParamField<clazz>

3. Вы не можете использовать переменную / значение в качестве параметра универсального типа. Синтаксис Java требует наличия типа в этой точке … ни одного примера Class .

4. @StephenC Я понял, что да, но какое тогда может быть решение здесь?

5. Измените ConditionParamField<clazz> на ConditionParamField<?> … Я думаю. Для уверенности недостаточно контекста (кода).