Java 使用yamlbeans和fxml属性的yaml序列化
我正在尝试使用YamlBeans序列化fxml属性。特别是一种财产。该类有一个私有属性字段和fxml标准getter和setter方法,但在发生序列化时,信息不会保存到文件中 入口点:Java 使用yamlbeans和fxml属性的yaml序列化,java,serialization,properties,yaml,Java,Serialization,Properties,Yaml,我正在尝试使用YamlBeans序列化fxml属性。特别是一种财产。该类有一个私有属性字段和fxml标准getter和setter方法,但在发生序列化时,信息不会保存到文件中 入口点: import java.io.IOException; public class Main { public static void main(String[] args) throws IOException{ Person person = new Person(5);
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException{
Person person = new Person(5);
YamlSerializer.serialize(person, System.getProperty("user.dir") + "/person.yml");
}
}
Person.java
import javafx.beans.property.Property;
import javafx.beans.property.SimpleDoubleProperty;
public class Person{
private Property<Number> age;
public Person(){
age = new SimpleDoubleProperty();
age.setValue(3);
}
public Person(Number age){
this.age = new SimpleDoubleProperty(age.doubleValue());
}
public Property<Number> ageProperty() {
return this.age;
}
public Number getAge() {
return this.ageProperty().getValue();
}
public void setAge(final Number age) {
this.ageProperty().setValue(age);
}
}
输出文件person.yml:
!Person {}
您的代码看起来正常。Beans
getProperties
为您的类返回什么?这是什么
结果是找到所有属性,然后寻找get/set方法。它看起来应该找到number
字段,然后是setNumber
和getNumber
方法,但您没有提供完整的类代码
我建议提供一个新的解决方案。试图帮助一个人而不这样做是一种冒险和浪费时间的行为
编辑:bean查找字段的方式,然后是匹配的setter/getter,Property age
不起作用。bean查找类型为Property
的setter/getter,但没有找到它们。IIRC它过去使用的是内省器,但它必须被删除,因为它在安卓系统中丢失了
要解决这个问题,您需要对bean进行修补,以便更智能地查找没有相应字段的setter/getter。这样做的PR将被合并。可能应该提到您正在使用。它在标题中,但我再次提到它以供澄清。我认为这是我缺少的代码,我不太理解。我应该在什么上调用getProperties?有什么方法可以让YamlWriter了解FXML bean吗?它似乎是一个空列表。图片添加。I'v添加的代码应该很容易粘贴到项目中,假设您安装了.jar for YamlBeans和Fxml。要制作可以复制/粘贴的代码,请使用静态类和main方法。也更容易写入/读取字符串。但这是下一次,我更新了我的答案。
!Person {}