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

问题描述 投票:3回答:3

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

Field fieldset[] = cls.getDeclaredFields();

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

Random rand = new Random();

random.nextInt()给了我一个整数...但我想要的只是有任何像rand(fldtype)那样的方法或者应该给我一个字段类型的随机值

java reflection random
3个回答
0
投票

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

但是,在这种情况下,您将难以转换返回类型。


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

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();
}
© www.soinside.com 2019 - 2024. All rights reserved.