如何将java.sql.Connection类型转换为OracleConnecction与从java.sql.Connection unwrap方法获取OracleConnection不同。
另外,如果我通过connection.unwrap(OracleConnection.class)创建OracleConnection,那么我应该在finally中关闭OracleConnection还是最后关闭java.sql.Connection。
答案 0 :(得分:2)
差异有点微妙但有意义。
如果实际的实现对象与声明的类不兼容,则类型转换将失败ClassCastException
。即如果实现不是OracleConnection
,并且您试图对其进行类型转换,那么您将获得异常。
使用unwrap(Class clazz)
将尝试查找指定类型的对象并返回该对象,如果无法使用SQLException
则失败。使用Wrapper
界面方法的好处是,您可以使用unwrap
方法提前检查isWrapperFor
是否成功。