You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

必须使用方法的返回值吗?关于忽略返回值的技术问询

不使用返回值的图书移除方法实现

嘿,我完全懂你的点——网上大多讲的都是怎么利用方法返回值,但有时候我们只需要方法默默完成移除操作,不需要返回被删掉的图书对象对吧?那咱们就把方法改成void类型,专注于执行移除动作本身就行。

1. 移除所有同名图书的void方法实现

这个方法的核心是遍历数组,把不匹配目标书名的图书保留下来,最后替换原数组并更新图书数量。这样比原地删除更不容易出错(避免数组索引混乱):

public void removeAll(String name) {
    // 用来存放保留的图书
    Book[] newLib = new Book[_lib.length];
    int newCount = 0;
    
    for (int i = 0; i < _noOfBooks; i++) {
        Book currentBook = _lib[i];
        // 如果当前图书书名不匹配,就加入新数组
        if (!name.equals(currentBook.getName())) {
            newLib[newCount] = currentBook;
            newCount++;
        }
    }
    
    // 替换原数组,更新图书数量
    _lib = newLib;
    _noOfBooks = newCount;
}

2. 移除第一本同名图书的void方法实现

这个逻辑更简单:找到第一个匹配的索引,然后把该索引后面的所有元素往前挪一位,最后把图书数量减1就行:

public void removeFirst(String name) {
    for (int i = 0; i < _noOfBooks; i++) {
        if (name.equals(_lib[i].getName())) {
            // 把i后面的元素依次往前移一位,覆盖掉要删除的元素
            for (int j = i; j < _noOfBooks - 1; j++) {
                _lib[j] = _lib[j + 1];
            }
            // 最后一位置空(可选,避免内存引用),然后更新图书数量
            _lib[_noOfBooks - 1] = null;
            _noOfBooks--;
            // 找到第一本就退出循环,不用继续找了
            break;
        }
    }
}

为什么用void而不是返回值?

当你的业务逻辑里,调用这个方法的地方不需要知道被移除的具体图书对象时,void方法会更清晰——它明确告诉阅读代码的人:“这个方法只负责完成移除操作,不会返回任何东西”。如果后续需要返回值,再把返回类型改回来就行,现在完全可以按你的需求专注于执行动作。

内容的提问来源于stack exchange,提问作者Eric Parker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:29:03