首页 > 解决方案 > 在类类型中使用变量

问题描述

我对这一切应该如何运作感到有些困惑。我正在尝试创建一个对象,该对象可以具有无限的字段,所有字段都具有不同的/动态类型(所以我事先不知道它们是哪些类型)。

我有一个头等舱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 包扩展而来。主要思想只是有一个 key:type 的映射,它将告诉我们需要什么键以及它们的类型应该是什么。我的想法是,<?>here 将填写 where Tis in the class before ( ConditionParamField<T>)

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

这两个组合在一个简单的管理器类中。我的想法是映射所需的字段并创建我的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);
            }

我显然做错了什么,但我不知道是什么。我对泛型或任何 <?> 都不是很熟悉。我希望你能理解我试图达到的目标。

这里的主要问题是我收到一个错误“Class clazz unknown” ConditionParamField<clazz>。似乎他没有接受变量,或者这根本不可能,我不确定。

我的最终主要目标是向用户显示一个只接受该字段的任何类型的输入(整数,字符串,...)

标签: java

解决方案


推荐阅读