多くの言語では、関数のパラメーターは入力 (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 クラスの実装パラメータの出力をどのように定義しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。