У меня есть список, содержащий данные со строковым типом → ["classField1", "classField2", "classField3"]
У меня есть метод (myMethod(List list, String className)
), который принимает в качестве параметра List. Таким образом, я могу передать этот список через параметр myMethod (список List, String className).
В myMethod
, я хочу создать один объект, который будет экземпляром классаName, который является вторым параметром. После этого я хочу установить поля класса, используя данные списка.
Из-за того, что я хочу динамически получать поля класса, результат выше - это то, что я должен отображать каждое значение String списка, тип каждого поля этого класса.
Я уверен, что порядок строк внутри Списка находится в правильном порядке и соответствует полям класса с тем же порядком.
Кто-нибудь знает, как это сделать?
Пример:
["StringtempValue", "StringUnitOfMeasurement"]
= >
Создать объект экземпляра:
public class TempStruct {
private double tempValue;
private String unitOfMeasurement;
public TempStruct(double tempValue, String unitOfMeasurement) {
this.tempValue = tempValue;
this.unitOfMeasurement = unitOfMeasurement;
}
}
Я пытаюсь дать решение следующим образом:
На самом деле я хочу создать объект существующего класса, и я попытался сделать это с отражением. Я использую следующий код:
Class<?> cls = Class.forName(name);
Object clsInstance = (Object) cls.newInstance();
Field[] objectFields = clsInstance.getClass().getDeclaredFields();
Но я получаю исключение во 2-й строке, когда он пытается создать новый объект. Поскольку @JB Nijet сказал, что я не знал, что метод getDeclaredFields() не возвращает отсортированные поля.
На самом деле, у меня есть метод, который принимает только List of Strings, поэтому, используя отражение, я конвертирую объект в List of string, а после этого хочу сделать обратное. Я не думал о другом способе этого.