always_lanlan 2024-06-14 14:22 采纳率: 25%
浏览 0

java中不接收方法的返回值就编译报错,不想一直建立变量来接收着这个返回值,如何解决?

vscode,java中不接收方法的返回值就编译报错,不想一直建立变量来接收着这个返回值,但是不接收就过不了编译

img

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-14 14:22
    关注

    引自免费微信小程序:皆我百晓生

    在Java中,如果你调用的方法有返回值但你并不关心这个返回值,通常的做法是将返回值赋给一个临时变量,但这可能会使得代码显得冗余。为了使代码更简洁且避免编译错误,你可以选择忽略返回值,但在某些情况下,Java编译器会警告你未使用的变量或表达式。下面提供两种常见的解决方案:

    解决方案一:使用通配符

    对于返回类型为void以外的方法,你可以使用通配符_(虽然Java本身不支持这种语法,但可以使用一个不会被引用的变量名来模拟这种效果),例如:

    public class Demo {
        public static void main(String[] args) {
            File bb = new File("F:/aaa.txt");
            File f1 = new File("helloworld");
    
            // 创建文件并忽略返回值
            boolean _ = bb.createNewFile();
    
            // 创建一级目录并忽略返回值
            // 注意,mkdir()和mkdirs()的返回值表示操作是否成功,
            // 如果你不关心结果,可以这样做:
            _ = f1.mkdir();
            _ = f1.mkdirs();
    
            // 删除文件或目录并忽略返回值
            _ = f1.delete();
        }
    }
    

    上述代码中,_变量实际上是一个不会被使用的局部变量,它的作用仅仅是接收返回值,避免编译错误。

    解决方案二:修改方法签名

    如果方法的返回值实际上没有意义,或者你确信不需要它,你可以考虑修改方法的实现,将其返回类型改为void,这样就不需要接收任何返回值了:

    public class Demo {
        public static void main(String[] args) {
            File bb = new File("F:/aaa.txt");
            File f1 = new File("helloworld");
    
            // 修改后的创建文件方法
            createFile(bb);
    
            // 修改后的一级目录创建方法
            createDirectory(f1);
    
            // 修改后的多级目录创建方法
            createDirectories(f1);
    
            // 修改后的删除方法
            deleteFileOrDirectory(f1);
        }
    
        private static void createFile(File file) {
            // 内部实现,不再需要返回值
            file.createNewFile();
        }
    
        private static void createDirectory(File directory) {
            // 内部实现,不再需要返回值
            directory.mkdir();
        }
    
        private static void createDirectories(File directory) {
            // 内部实现,不再需要返回值
            directory.mkdirs();
        }
    
        private static void deleteFileOrDirectory(File fileOrDirectory) {
            // 内部实现,不再需要返回值
            fileOrDirectory.delete();
        }
    }
    

    通过上述方法,你可以有效地避免接收不必要的返回值,同时保持代码的清晰性和可读性。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月14日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表