Java 中的Class.getClassLoader

在了解Class.getClassLoader之前先看一下获取类的class的三种方式反射机制获取类有三种方法,我们来获取Person类型  

第一种方式:
  Class c1 = Class.forName("com.kimit.domain.Person");
第二种方式:
  // java中每个类型都有class 属性.
  Class c2 = Person.class;
第三种方式:
  // java语言中任何一个java对象都有getClass 方法 c3是运行时类 (p的运行时类是Person)
  Person p = new Person();
  Class c3 = p.getClass();
public class JdbcPool implements IPool {   
   private static String jdbcDriver;
    private static String jdbcUrl;
    private static String username;
    private static String password;
    //初始化连接数
    private static Integer initConnectCount;
    //最大连接数
    private static Integer maxConnects;
    //当连接不够时自动增长的数
    private static Integer incrementCount;
    //因为Vector是线程安全的,所以暂时选择它
    private static Vector<PoolConnection> connections = new Vector<>();
    InputStream is1 = JdbcPool.class.getClassLoader().getResourceAsStream("jdbc.properties");
}


jdbcDriver = com.mysql.jdbc.Driver
jdbcUrl = jdbc:mysql://localhost:3306/test?userUnicode=true&useSSL=false&charterEncoding=UTF8
username = root
password = 123456
initConnectCount = 20
maxConnectCount = 100
incrementCount = 3

当读取一个jdbc.properties文件时,需要把他加载到对象里,但是此时连接池的实现类的对象还没有创建,这时候就需要通过反射来获取;
首先我使用类名.class的方式获取类的class
InputStream is1 = JdbcPool.class.getClassLoader().getResourceAsStream("jdbc.properties")
但是我们都知道java程序写好以后是以.java(文本文件)的文件存在磁盘上,然后,我们通过(bin/javac.exe)编译命令把.java文件编译成.class文件(字节码文件),并存在磁盘上。但是程序要运行,首先一定要把.class文件加载到JVM内存中才能使用的,我们所讲的classLoader,就是负责把磁盘上的.class文件加载到JVM内存中,
Java 中的Class.getClassLoader
 
上一篇:java读取resources目录下的文件


下一篇:javaWeb项目class.getClassLoader().getResourceAsStream获取结果为null解决方法