[英]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.