В любом случае, чтобы отключить несколько полей объекта с помощью карты? [Ява]

У меня есть объект с некоторыми полями, и у них есть сеттеры. Я хочу выполнить итерацию по карте из запроса и на основе имени ключа со значением null - отключить поле, выполнив что-то вроде

field1.set[key](null)

вместо того, чтобы запрос был списком и выполнял

list.forEach() {
  if (list.contains(key)) {
    object.setKeyName(null);
  }
}

Это возможно? Это было бы более динамично, чем необходимость добавлять новый оператор if каждый раз, когда в модель добавляется новое поле. Не обращайте внимания на дезинфекцию входа.

# dictionary request setter
Источник
  • 0
    BeanUtils.populate близок к тому, что вы хотите, но он использует значения карты
Codelisting
за 0 против

Вы можете сделать это с помощью Reflection.

for (String fieldName : list) {
    Class parameterType; //get the type
    object.getClass().getDeclaredMethod("set" + fieldName, parameterType).invoke(object, null);
}
  • 0
    Кажется, это то, что мне нужно, но null выдает недопустимое количество аргументов, потому что я предполагаю, что оно должно быть> 1. В любом случае об этом?
  • 0
    Какие параметры? У всех ли методов одинаковые параметры?
  • 0
    Я нашел ответ. Вам нужно установить для переменной значение null и передать ее для вызова в качестве значения. В противном случае он будет интерпретировать его как отсутствие аргументов вместо 1 аргумента со значением null.
  • 0
    Итак, массив объектов с нулем внутри?
Codelisting
Популярные категории
На заметку программисту