您好,登錄后才能下訂單哦!
這篇文章主要介紹Java如何定義Holder類實現參數的輸出,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
在很多語言中,函數的參數都有輸入(in)、輸出(out)和輸入輸出(inout)之分。在C/C++語言中,可以用對象的引用(&)來實現函數參數的輸出(out)和輸入輸出(inout)。但在Java語言中,雖然沒有提供對象引用類似的功能,但是可以通過修改參數的字段值來實現函數參數的輸出(out)和輸入輸出(inout)。這里,我們叫這種輸出參數對應的數據結構為Holder(支撐)類。
Holder類實現代碼:
/** 長整型支撐類 */@Getter@Setter@ToStringpublic class LongHolder { /** 長整型取值 */ private long value; /** 構造函數 */ public LongHolder() {} /** 構造函數 */ public LongHolder(long value) { this.value = value; } }
Holder類使用案例:
/** 靜態常量 *//** 頁面數量 */private static final int PAGE_COUNT = 100;/** 最大數量 */private static final int MAX_COUNT = 1000;/** 處理過期訂單 */public void handleExpiredOrder() { LongHolder minIdHolder = new LongHolder(0L); for (int pageIndex = 0; pageIndex < PAGE_COUNT; pageIndex++) { if (!handleExpiredOrder(pageIndex, minIdHolder)) { break; } } }/** 處理過期訂單 */private boolean handleExpiredOrder(int pageIndex, LongHolder minIdHolder) { // 獲取最小標識 Long minId = minIdHolder.getValue(); // 查詢過期訂單(按id從小到大排序) List<OrderDO> orderList = orderDAO.queryExpired(minId, MAX_COUNT); if (CollectionUtils.isEmpty(taskTagList)) { return false; } // 設置最小標識 int orderSize = orderList.size(); minId = orderList.get(orderSize - 1).getId(); minIdHolder.setValue(minId); // 依次處理訂單 for (OrderDO order : orderList) { ... } // 判斷還有訂單 return orderSize >= PAGE_SIZE; }
其實,可以實現一個泛型支撐類,適用于更多的數據類型。
以上是“Java如何定義Holder類實現參數的輸出”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。