Dans de nombreux langages, les paramètres d'une fonction sont divisés en entrée (in), sortie (out) et entrée et sortie (inout). Dans le langage C/C++, vous pouvez utiliser des références d'objet (&) pour implémenter la sortie (out) et l'entrée et la sortie (inout) des paramètres de fonction. Cependant, dans le langage Java, bien qu'il n'existe pas de fonction similaire pour les références d'objets, la sortie (out) et l'entrée et la sortie (inout) des paramètres de fonction peuvent être réalisées en modifiant les valeurs de champ des paramètres. Ici, nous appelons la structure de données correspondant à ce paramètre de sortie la classe Holder (support).
Code d'implémentation de la classe Holder :
/** 长整型支撑类 */@Getter@Setter@ToStringpublic class LongHolder { /** 长整型取值 */ private long value; /** 构造函数 */ public LongHolder() {} /** 构造函数 */ public LongHolder(long value) { this.value = value; } }
Cas d'utilisation de la classe 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; }
En fait, une classe de support générique peut être implémentée, qui convient à plus de types de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!