【问题标题】:Java - Is it possible to instance for a UserDefined Class or java primitive typesJava - 是否可以实例化用户定义的类或 java 原始类型
【发布时间】:2013-04-17 18:45:25
【问题描述】:

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

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;
    }

}

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

如果 dataType someUserDefinedPOJO 和 isArray Y

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

vise versa for java primitive types too.

is it possible through reflection in java?

如何做到这一点?

最好的问候

【问题讨论】:

  • 你想通过这个实现什么?是否要将动态变量和相应的代码添加到您的源代码中?
  • 我建议你看看 Java 中的 reflection。但是,如果这是您程序中的一项重要功能,那么使用弱类型编程语言会更容易。
  • 我不确定我是否在关注,但请注意Object 几乎可以存储任何东西。无论如何,您最好重新设计您的程序,以便不再需要您尝试做的事情。
  • 我已经编辑了我的问题,希望现在有意义。

标签: java variables


【解决方案1】:

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

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

System.out.printlb(map.get("myVarName"));

【讨论】:

  • 这是我们知道会发生什么的时候,如果是这样,我需要动态创建实例并在源代码级别本身创建它
  • 它是对动态变量最好的模仿,你可以放任何来自任何地方的名字,它是一个字符串
【解决方案2】:

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

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

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);
}

【讨论】:

    【解决方案3】:

    我认为你应该研究一下 java 反射。但这已经在 SO 上发布了。

    Read link 1

    Read link 2

    【讨论】:

      【解决方案4】:

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

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

      但我不知道数组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-08-10
        • 2012-07-14
        • 2011-07-31
        • 2013-02-02
        • 1970-01-01
        • 2013-09-18
        • 1970-01-01
        相关资源
        最近更新 更多