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,getClassLoader,private,class,Person,static,java,Class 来源: https://www.cnblogs.com/kimit/p/15707296.html