У меня есть объект, который заполняется непосредственно из файла Excel, поэтому каждое свойство имеет тип String. Затем я сопоставляю это свойство с реальной сущностью, в которой установлены все правильные типы данных с использованием синтаксического анализа с try catch. Например:
InputEntity:
public class ProductInput {
String name;
String color;
String price;
String date;
}
ActualEntity:
public class Product {
String name;
String color;
Double price;
Date date;
}
До фактического сопоставления Iхотел бы регистрировать любые ошибки в базе данных, используя созданный мной класс Error.
Конечная цель состоит в том, чтобы убедиться, что каждое значение, полученное из InputEntity, не является нулевым или пустым и имеет правильный тип (может бытьустановить в Actual Entity без каких-либо ошибок). Я хочу использовать отражение, чтобы пройтись по полям класса Product и найти соответствующее поле в классе ProductInput. Затем проверьте его значение с помощью правильной функции синтаксического анализа, чтобы убедиться, что она в конечном итоге сможет быть установлена в сущности Product. Если есть ошибка, я собираюсь создать запись об ошибке, которая включает имя свойства, которое не удалось, и сохранить его в базе данных, сообщая, какое поле ввода имеет проблему.
Является ли отражение правильным способом решения этой проблемы? Я хочу, чтобы функция была достаточно универсальной, чтобы обрабатывать любые классы в качестве входных и фактических, предполагая, что свойства входной сущности всегда будут строковыми, а имена свойств будут совпадать.
Я думал где-то вроде:
public validateFields(Class<T> inputClass, Class<T> destinationClass) {
Field[] inputFields = inputClass.getDeclaredFields();
Field[] destinationFields = destinationClass.getDeclaredFields();
for (Field field: destinationFields) {
// Check for same field in inputClass
// If it exists confirm value of field is not null or empty
// Additionally confirm the value of field can be parsed to the type of the destinationField
// Create error entity with property name if there is a problem
}
}