Передать массив геттеров как параметр функции Java - PullRequest
0 голосов
/ 25 августа 2018

Я пишу функцию для создания листов xls из JFXTableView.

XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("user details");
XSSFRow header = sheet.createRow(0);
String arrayOfHeaders [] = {"Sr. No.","Name of the Member", "Customized workout card status","Contact No.","Current programme taken","Current package taken",
                            "Purpose of taking customized workout card", "body type identified"," Current Body weight","Current height","payment amount",
                            "Mode of payment"};

for(int i=0; i<arrayOfHeaders.length; i++){
    header.createCell(i).setCellValue(arrayOfHeaders[i]);
}
int index=1;
for(Member item: tableView.getItems()){
    XSSFRow row = sheet.createRow(index);
    int cellIndex=0;
    for (Method m : item.getClass().getMethods()) {
        // The getter should start with "get" 
        // I ignore getClass() method because it never returns null
        if (m.getName().startsWith("get") && !m.getName().equals("getClass")) {

            row.createCell(cellIndex).setCellValue((String) m.invoke(item));

        }
        cellIndex++;

}
    index++;
}

С помощью приведенного выше кода я могу получить значения из таблицы через геттеры, но проблема в том, что item.getClass (). GetMethods () возвращает геттеры в случайном порядке, и это не приемлемо, так как я хочу значения в соответствии с определенными заголовками. У меня есть много таких таблиц, каждая со своим собственным классом и получателем, и написание различных функций для каждой из них кажется слишком длинным. Итак, я планирую написать функцию, в которой я мог бы передавать получатели каждого отдельного объекта таблицы в массиве, чтобы он мог перебирать все получатели конкретного объекта tableView. Как то так:

createSheets(arrayOfHeaders, tableView.getItems(), arrayOfGetters);

Пример одного такого класса-члена, используемого моим текущим tableView:

public static class Member{



    private final SimpleStringProperty name;
    private final SimpleStringProperty status;
    private final SimpleStringProperty contact;
    private final SimpleStringProperty programme;
    private final SimpleStringProperty packages;
    private final SimpleStringProperty purpose;
    private final SimpleStringProperty bodyType;
    private final SimpleStringProperty weight;
    private final SimpleStringProperty height;
    private final SimpleIntegerProperty paymentAmount;
    private final SimpleStringProperty paymentMode;


    public Member (String name, String status, String contact, String programme, String packages, String purpose, 
            String bodyType, String weight, String height, int paymentAmount, String paymentMode){

    this.name = new SimpleStringProperty(name);
    this.status = new SimpleStringProperty(status);
    this.contact = new SimpleStringProperty(contact);
    this.programme = new SimpleStringProperty(programme);
    this.packages = new SimpleStringProperty(packages);
    this.purpose = new SimpleStringProperty(purpose);
    this.bodyType = new SimpleStringProperty(bodyType);
    this.weight = new SimpleStringProperty(weight);
    this.height = new SimpleStringProperty(height);
    this.paymentAmount = new SimpleIntegerProperty(paymentAmount);
    this.paymentMode = new SimpleStringProperty(paymentMode);

    }

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

    public String getStatus() {
    return status.get();
    }

    public String getContact() {
    return contact.get();
    }

    public String getProgramme() {
    return programme.get();
    }

    public String getPackages() {
    return packages.get();
    }

    public String getPurpose() {
    return purpose.get();
    }

    public String getBodyType() {
    return bodyType.get();
    }

    public String getWeight() {
    return weight.get();
    }

    public String getHeight() {
    return height.get();
    }

    public int getPaymentAmount() {
    return paymentAmount.get();
    }

    public String getPaymentMode() {
    return paymentMode.get();
    }




}
...