Итак, чтобы быть более точным c У меня есть простой файл ymal и класс, с которым мне нужно разобраться, но проблема в том, что мне нужен конструктор (с геттерами и сеттерами все работает нормально, но с конструктором программа вызывает большое количество спама из-за ошибок), поэтому, если кто-нибудь может предложить мне способ решения этой проблемы, я буду очень признателен за это.
File:
firstName: "John"
lastName: "Doe"
age: 31
contactDetails:
- type: "mobile"
number: 123456789
- type: "landline"
number: 456786868
Класс (как я уже сказал, класс с конструктором, геттеры без сеттеров)
public class Customer {
private String firstName;
private String lastName;
private int age;
private List<Contact> listContact;
public Customer(String firstName,String lastName,List<Contact> listContact){
this.firstName = firstName;
this.lastName = lastName;
this.listContact = listContact;
}
//getters and toString
}
Попытка разбора (я использую библиотеку SnakeYAML)
Yaml yaml = new Yaml(new Constructor(Customer.class));
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(fileName);
Customer customer = yaml.load(inputStream);
И ошибка
Exception in thread "main" Can't construct a java object for tag:yaml.org,2002:zad1.Customer; exception=java.lang.InstantiationException: NoSuchMethodException:zad1.Customer.<init>()
in 'reader', line 1, column 1:
firstName: "John"
^
at org.yaml.snakeyaml.constructor.Constructor$ConstructYamlObject.construct(Constructor.java:336)
at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:230)
at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:219)
at org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument(BaseConstructor.java:173)
at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:157)
at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:472)
at org.yaml.snakeyaml.Yaml.loadAs(Yaml.java:466)
at zad1.Tools.createOptionsFromYaml(Tools.java:18)
at zad1.Main.main(Main.java:14)
Caused by: org.yaml.snakeyaml.error.YAMLException: java.lang.InstantiationException: NoSuchMethodException:zad1.Customer.<init>()
at org.yaml.snakeyaml.constructor.BaseConstructor.newInstance(BaseConstructor.java:303)
at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.construct(Constructor.java:167)
at org.yaml.snakeyaml.constructor.Constructor$ConstructYamlObject.construct(Constructor.java:331)
... 8 more
Caused by: java.lang.InstantiationException: NoSuchMethodException:zad1.Customer.<init>()
at org.yaml.snakeyaml.constructor.BaseConstructor.newInstance(BaseConstructor.java:333)
at org.yaml.snakeyaml.constructor.BaseConstructor.newInstance(BaseConstructor.java:308)
at org.yaml.snakeyaml.constructor.BaseConstructor.newInstance(BaseConstructor.java:301)
... 10 more