有没有办法根据字段类型获取随机值?确切的情况是我使用反射来获取类的声明字段。我想将假数据设置为我得到的字段。
Field fieldset[] = cls.getDeclaredFields();
对于fieldlist的字段fld我可以使用fld.getType()
获取类型
但我必须在运行时根据类型设置随机值
Random rand = new Random();
random.nextInt()
给了我一个整数...但是我想要的只是有任何类似rand(fldtype)
的方式或方式,它应该给我一个字段类型的随机值
答案 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();
}