случайное значение в Java в зависимости от типа поля - PullRequest
3 голосов
/ 21 февраля 2011

Есть ли способ получить случайное значение в зависимости от типа поля ?? Точный сценарий - я использовал отражение, чтобы получить объявленные поля класса. Я хочу установить поддельные данные для полей, которые я получил.

Field fieldset[] = cls.getDeclaredFields();

для поля поля fieldlist я могу получить тип, используя fld.getType() но я должен установить случайное значение в зависимости от типа во время выполнения

Random rand = new Random();

random.nextInt() дает мне целое число ... но все, что я хочу, это если есть какой-либо метод или способ, подобный rand(fldtype), который должен дать мне случайное значение типа поля

Ответы [ 3 ]

0 голосов
/ 21 февраля 2011

Создайте случайное число от 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 голосов
/ 21 февраля 2011

Это примерно то, что вам нужно? 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();
}
0 голосов
/ 21 февраля 2011

Вы можете вызвать метод для случайного класса, используя рефлексию, и иметь карту, которая отображает типы в функции для случайного класса.Это позволит вам выполнять только одно сравнение и добавлять / удалять типы с меньшим обслуживанием.

Однако в этом случае вам будет трудно привести тип возвращаемого значения.

...