看java jdbc接口api 不明白,为什么接口内没有具体实现却能直接使用?网上说是加载了驱动,驱动实现了这些接口(Statement,Connection),驱动类确实是实现了这些接口,但是不明白的是,为什么这些接口操作没有用它们的实现类进行实例化就可以使用呢?java一般不是这样形式:接口A的实现类B ,A a=new B(); 这样就可以通过接口A的对象a进行调用接口内声明的方法了,但是Statement,Connection这些具体是驱动类如何对它们实例化的呢?

解决方案 »

  1.   

    jdbc中应用了反射机制,所以可以不用实例化就可以了使用,这是一种必然!
      

  2.   

    楼上解释解释jdbc jar里这些Impl类是干啥的???不用实例化。。
      

  3.   

    3楼说的对,还有一点不明白的事情是:
    Connection conn=null;
    PreparedStatement pstmt=conn.prepareStatement(sql);
    在api接口Connection中prepareStatement方法并没有具体实现,肯定是在驱动类里面实现的,但是这里直接conn.prepareStatement(sql)是如何找到子类的具体实现方法的呢?这是什么原理?