Java通过接口或者抽象类调用方法的时候,怎么知道调用的是哪个实现类里的方法?

更新时间:2023-05-12 02:26:16 阅读: 评论:0

Java通过接⼝或者抽象类调⽤⽅法的时候,怎么知道调⽤的是哪个实现类⾥的
⽅法?
Java通过接⼝或者抽象类调⽤⽅法的时候,怎么知道调⽤的是哪个实现类⾥的⽅法?
⽤对象的 getClass() ⽅法获得它的类,之后就可以随意去判断这是哪个实现类了。
⽐如代码1-1所⽰的JDBC连接池的代码,我们想要知道conn调⽤的clo⽅法是释放连接还是归还连接,
我们可以打印Class()::
Connection conn = Connection();
System.out.Class());
结果为class com.alibaba.druid.pool.DruidPooledConnection,所以这个Connection的实现类其实是DruidPooledConnection,查看源码可以知道DruidPooledConnection的clo⽅法是归还连接到连接池,⽽不是释放连接
代码1-1:
复制代码
1package cn.itcast.utils;
2
3import com.alibaba.druid.pool.DruidDataSourceFactory;
4
5import javax.sql.DataSource;
6import java.io.IOException;
7import java.sql.Connection;
8import java.sql.ResultSet;
9import java.sql.SQLException;
10import java.sql.Statement;
11import java.util.Properties;
12
13public class JDBCUtils {
14private static DataSource ds;
15
16static{
17        Properties pro =new Properties();
18try{
19// 1.加载配置⽂件
20            pro.load(ClassLoader().getResourceAsStream("druid.properties"));
21// 2.获取DataSource
22            ds = ateDataSource(pro);
23}catch(IOException e){
24            e.printStackTrace();
25}catch(Exception e){
26            e.printStackTrace();
27}
28}
29
30
31public static DataSource getDataSource(){
32return ds;
33}
33}
34/**
35      * 获取连接
36      * @return
37      * @throws SQLException
38      */
39public static Connection getConnection()throws SQLException {
Connection();
41}
42
43
44public static void clo(Statement stmt, Connection conn){
45if(stmt != null){
46try{
47                stmt.clo();
48}catch(SQLException e){
49                e.printStackTrace();
50}
51}
52
53if(conn != null){
54try{
55                conn.clo();
56}catch(SQLException e){
57                e.printStackTrace();
58}
59}
60}
61
62
63public static void clo(ResultSet rs, Statement stmt, Connection conn){ 64if(rs != null){
65try{
66                rs.clo();
67}catch(SQLException e){
68                e.printStackTrace();
69}
70}
71if(stmt != null){
72try{
73                stmt.clo();
74}catch(SQLException e){
75                e.printStackTrace();
76}
77}
78
79if(conn != null){
80try{
81                conn.clo();
82}catch(SQLException e){
83                e.printStackTrace();
84}
85}
86}
87
88
89}

本文发布于:2023-05-12 02:26:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/593531.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:知道   连接   代码   实现   配置   判断   加载
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图