java中的随机值取决于字段类型

时间:2011-02-21 04:47:25

标签: java reflection random

有没有办法根据字段类型获取随机值?确切的情况是我使用反射来获取类的声明字段。我想将假数据设置为我得到的字段。

Field fieldset[] = cls.getDeclaredFields();

对于fieldlist的字段fld我可以使用fld.getType()获取类型 但我必须在运行时根据类型设置随机值

Random rand = new Random();

random.nextInt()给了我一个整数...但是我想要的只是有任何类似rand(fldtype)的方式或方式,它应该给我一个字段类型的随机值

3 个答案:

答案 0 :(得分:0)

您可以使用reflexion在随机类上调用该方法,并使用Map将类型映射到随机类的函数。这将允许您只进行一次比较,并添加/删除维护较少的类型。

但是,在这种情况下,你很难转换返回类型。

答案 1 :(得分:0)

生成0到(无字段)-1之间的随机数,并获得所需的字段。

代码是这样的。

Field fieldset[] = cls.getDeclaredFields();
int noOfFiledsLessOne=fieldset.length-1;

Random rand=new Random()

Integer i=rand.float()*noOfFiledsLessOne;

Field randField=fieldset[i];

答案 2 :(得分:0)

这大致是你需要的吗? Class<?>Field.getType()

的返回类型
private static final List<Class<?>> seeds = new ArrayList<Class<?>>();

public static int rand(Class<?> clazz) {
  int seed = seeds.indexOf(clazz);
  if(seed == -1) {
    seeds.add(clazz);
    seed = seeds.size() - 1;
  }

  Random random = new Random(seed);
  return random.nextInt();
}