Java创建动态可观察列表

Java创建动态可观察列表,java,dynamic,runtime,observablelist,Java,Dynamic,Runtime,Observablelist,是否可以创建具有相对StringProperty的动态ObservableList 例如,使用下面的代码,如何动态地重新创建它并在必要时添加新的StringProperty private final ObservableList<Record> recordList = FXCollections.observableArrayList(); public static class Record { private static int trackId; pri

是否可以创建具有相对StringProperty的动态ObservableList

例如,使用下面的代码,如何动态地重新创建它并在必要时添加新的StringProperty

private final ObservableList<Record> recordList = FXCollections.observableArrayList();

public static class Record {

    private static int trackId;
    private final SimpleIntegerProperty id;
    private final SimpleStringProperty name;
    private final SimpleStringProperty lastName;
    private final SimpleStringProperty email;

    private Record(String name, String lastName, String email) {

        this.id = new SimpleIntegerProperty(trackId);
        this.name = new SimpleStringProperty(name);
        this.lastName = new SimpleStringProperty(lastName);
        this.email = new SimpleStringProperty(email);
        trackId++;
    }

    public int getId() {
        return this.id.get();
    }

    public void setId(int id) {
        this.id.set(id);
    }

    public String getName() {
        return this.name.get();
    }

    public void setName(String name) {
        this.name.set(name);
    }

    public String getLastName() {
        return this.lastName.get();
    }

    public void setLastName(String lastName) {
        this.lastName.set(lastName);
    }

    public String getEmail() {
        return this.email.get();
    }

    public void setEmail(String email) {
        this.email.set(email);
    }
}
private final observeList recordList=FXCollections.observearraylist();
公共静态类记录{
私有静态int-trackId;
私有最终SimpleIntegerProperty id;
私有最终SimpleStringProperty名称;
私有最终SimpleStringProperty姓氏;
私人最终SimpleStringProperty电子邮件;
私人记录(字符串名称、字符串姓氏、字符串电子邮件){
this.id=新的SimpleIntegerProperty(trackId);
this.name=新的SimpleStringProperty(名称);
this.lastName=新的SimpleStringProperty(lastName);
this.email=新的SimpleStringProperty(电子邮件);
trackId++;
}
公共int getId(){
返回此.id.get();
}
公共无效集合id(内部id){
此.id.set(id);
}
公共字符串getName(){
返回此.name.get();
}
公共void集合名(字符串名){
this.name.set(name);
}
公共字符串getLastName(){
返回此.lastName.get();
}
public void setLastName(字符串lastName){
this.lastName.set(lastName);
}
公共字符串getEmail(){
返回此.email.get();
}
公用电子邮件(字符串电子邮件){
this.email.set(email);
}
}

即使要使用反射,也不能向类中添加字段。也许改变架构更好?让我们看下一节课:

class Property <T> {
    private final T propertyValue;
    private final String propertyName;

    public Property (String name, T value) {
        this.propertyName = name;
        this.propertyValue = value;
    }

    public T getValue(){
        return propertyValue;
    }

    public String getName(){
        return propertyName;
    }
}
类属性{
私人最终财产价值;
私有最终字符串propertyName;
公共属性(字符串名称,T值){
this.propertyName=名称;
this.propertyValue=值;
}
公共T getValue(){
返回属性值;
}
公共字符串getName(){
返回propertyName;
}
}
此类帮助您创建新属性并存储它。现在,您可以创建属性列表并将其存储在类记录中。现在,您可以动态添加新属性。我认为它更灵活