try后面还能跟小括号,赶紧记录起来

16 篇文章 0 订阅
本文揭示了Java 7引入的try-with-resources特性,如何通过小括号自动管理实现了AutoCloseable接口的Cursor资源,避免了显式finally块的繁琐。作者还解释了这一高级特性背后的编译器机制。
摘要由CSDN通过智能技术生成

今天在阅读代码的时候,碰到一个很陌生的写法,try后面跟着小括号

    try (SqlSession sqlSession = sqlSessionFactory.openSession();
             Cursor<WechatUser> wechatUserCursor = sqlSession.getMapper(WechatUserDao.class).getAllPhone()
        ) {
            
        } catch (IOException e) {
            e.printStackTrace();
        }

这对我来说是很陌生的,我印象中应该是长这样的

        SqlSession sqlSession = sqlSessionFactory.openSession();
        Cursor<WechatUser> wechatUserCursor = sqlSession.getMapper(WechatUserDao.class).getAllPhone();
        try {
        
        } finally {
            sqlSession.close();
            try {
                wechatUserCursor.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

经过和谷歌的密切交流,终于解开了我的疑惑

Java7提供了try-with-resources机制,将实现了 java.lang.AutoCloseable 接口的资源定义在 try 后面的小括号中,无论 try 块是正常结束仍是异常结束,这个资源都会被自动关闭。 try 小括号里面的部分称为 try-with-resources 块。那Java是怎么实现的呢,当然是编译器在搞鬼。编译器自动帮我们生成了finally块,并且在里面调用了资源的close方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值