1、简介
java.sql.Wrapper 是 JDBC 的接口,当相关实例实际上是代理类时,该接口提供检索委托实例的功能。
许多 JDBC 驱动程序实现使用包装器模式提供超越传统 JDBC API 的扩展功能,传统 JDBC API 是特定于数据源的。开发人员可能希望访问那些被包装(代理)为代表实际资源代理类实例的资源。
此接口描述了一种标准机制,用于访问那些由代理代表的包装资源的标准机制,以允许对资源代理的直接访问。
2、源码
这个接口只定义了两个方法,下面我们分别学习一下这两个方法的功能
2.1、 T unwrap(java.lang.Class iface)
返回一个实现给定接口的对象,以允许访问非标准方法或代理未公开的标准方法。
如果接收者实现了该接口,那么结果是接收者或接收者代理。
如果接收者是包装器且包装对象实现了该接口,那么结果是包装对象或包装对象的代理。否则,返回对该包装对象或该结果的代理进行递归调用的结果。
如果接收者不是包装器且未实现该接口,则抛出 sqlexception。
参数:
iface - 定义结果必须实现的接口的 class。
返回值:
一个实现接口的对象。 可能是实际实现对象的代理。
2.2、boolean isWrapperFor(java.lang.Class<?> iface)
如果此方法实现了接口参数,或者直接或间接地对该对象进行了包装,则返回true。 否则返回false。
如果实现了接口,那么返回true,否则如果这是一个包装器,那么返回在包装对象上递归调用isWrapperFor的结果。
如果不实现接口并且不是包装器,则返回false。
与 unwrap 相比,此方法应作为一种低成本操作来实现,以便调用者可以使用此方法来避免可能失败的昂贵的 unwrap 调用。 如果此方法返回true,则使用相同参数调用unwrap应该会成功。
参数:
iface - 定义接口的类。
返回值:
如果这实现了接口,或者直接或间接地包装了一个对象,则为true。
3、接口 java.sql.Wrapper 的使用
3.1、使用 Wrapper 的软件包
java.sql | 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 |
javax.sql | 为通过 JavaTM 编程 |