簡體   English   中英

如何處理不同類型的列表

[英]How to handle Lists with different types

我有一個 function ,它將 object 作為 JSON 正文並返回一個返回列表作為 Z0ECD1D81C1D7A2BB87A4A 正文。

這是 function:

public List<Event> executeRule(Rule rule) {
        List<Transaction> userTransaction = transactionsService.latestTransactionsForUser(rule.getUserId());
        List<Rule> ruleList = activeRulesForUser(rule.getUserId());

       return eventList;
}

從作為參數傳遞的 object 中,我獲取userId並查找特定用戶的所有事務和規則。 現在我必須將單個用戶的這些事務和規則作為Event類型的新列表返回。

什么是最佳實踐,因為我有兩個不同類型的列表和第三個列表,我必須返回不同類型的列表?

我想你想返回用戶事務和規則,如果你多次遇到這些,也許這表明你應該將它們包裝在 class 中,如下所示:

class UserEvents {

    private List<Transaction> transactions;
    private List<Rule> rules;
    
    public UserEvents(List<Transaction> transactions, List<Rule> rules) {
        this.transactions = transactions;
        this.rules = rules;
    }

    public UserEvents() {
        this(new ArrayList<>(), new ArrayList<>());
    }

    public List<Transaction> getTransactions() {
        return transactions;
    }

    public void setTransactions(List<Transaction> transactions) {
        this.transactions = transactions;
    }

    public List<Rule> getRules() {
        return rules;
    }

    public void setRules(List<Rule> rules) {
        this.rules = rules;
    }
}

然后您的 function 將如下所示:

public UserEvents executeRule(Rule rule) {
    List<Transaction> transactions = transactionsService.latestTransactionsForUser(rule.getUserId());
    List<Rule> rules = activeRulesForUser(rule.getUserId());
    
    return new UserEvents(transactions, rules);
}

我想讓您知道,名稱中帶有“執行”的 function 並不需要返回某些東西,它應該執行任務或類似的東西。

您應該為您的函數和方法提供描述性和正確的名稱,您應該僅從方法聲明中了解該方法的作用。

我找到了一個可行的解決方案。

public List<Event> executeRule(Rule rule) {
        List<Transaction> userTransaction = transactionsService.latestTransactionsForUser(rule.getUserId());
        List<Rule> ruleList = activeRulesForUser(rule.getUserId());
        
        List<Event> eEventList = new ArrayList<>();
        Event event = new Event();
        event.setUserId(rule.getUserId());
        savingsEvent.setTransactions(userTransaction);
        savingsEvent.setSavingsRules(savingsRuleList);

        savingsEventList.add(savingsEvent);

       return savingsEventList;
    }

所以解決方案是創建一個新的 object 事件並用我需要的兩個列表中的數據填充它,然后將 object 添加到事件列表中。

在事件 object 中,我添加了兩個列表:

class Event {

    private Long id;
    private Long userId;
    private List<Transaction> transactions;
    private List<Rule> rules;
    
    //Getters, Setters, Constructors
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM