2

我有一个用户定义的类,如下所示,

package com.hexgen.tools;

public class UserDefinedParams {
    private String dataType="";
    private String isArray="";
    public String getDataType() {
        return dataType;
    }
    public void setDataType(String dataType) {
        this.dataType = dataType;
    }
    public String getIsArray() {
        return isArray;
    }
    public void setIsArray(String isArray) {
        this.isArray = isArray;
    }

}

dataType以及isArray如果 dataType ->this may have userdefined pojo class or java primitive type和 if isArray ->的值this will have Y or N。基于此如何创建类似的东西:

如果 dataTypesomeUserDefinedPOJO和 isArrayY

->someUserDefinedPOJO[] obj = new someUserDefinedPOJO();

vise versa for java primitive types too.

is it possible through reflection in java?

这个怎么做?

此致

4

4 回答 4

4

只需使用 a HashMap<String,Object>,您就可以在其中定义所有变量,例如:

HashMap<String,Object> map=new HashMap<String,Object>();
map.put("myVarName",new Object());

System.out.printlb(map.get("myVarName"));
于 2013-04-24T09:25:15.970 回答
1

Java 中没有动态变量。Java 变量必须在源代码中声明。

根据您要实现的目标,您应该使用数组、List 或 Map;例如,请参见此处

int n[] = new int[3];
for (int i = 0; i < 3; i++) {
    n[i] = 5;
}

List<Integer> n = new ArrayList<Integer>();
for (int i = 1; i < 4; i++) {
    n.add(5);
}

Map<String, Integer> n = new HashMap<String, Integer>();
for (int i = 1; i < 4; i++) {
    n.put("n" + i, 5);
}
于 2013-04-24T09:26:10.083 回答
1

我认为您应该研究Java反射。但这已经发布在SO上。

阅读链接 1

阅读链接 2

于 2013-04-24T09:26:47.133 回答
1

另一种可能的方法是使用泛型:

public class CustomVariable<E> {
    private E var;

    public CustomVariable<E>(E value){
        var = value;
    }
}

但是我不知道数组。

于 2013-04-24T09:28:10.380 回答