我会走向何方

我又该走向何方

BlogJava 首页 新随笔 联系 聚合 管理
  15 Posts :: 2 Stories :: 17 Comments :: 0 Trackbacks
最近研究了一下java的类加载器
先看一下实例化一个类的几种方法:
1、new
2、Class.newInstance
3、clone()
4、序列化
再看一下加载一个类的几种方法:
1、A a =new A();(单独声明一个类A a,不会促使类加载器加载我们要的类,只有实例化new的时候类加载器才会为我们加载类)
2、Class.forName(pkg.A); or Class.forName(pkg.A,true|fale,ClassLoader)
3、classLoader.loadClass(pkg.A);
java的类加载可以分为预先载入和依需求载入,用java -verbose可以看到类的加载顺序
关于类的初始化(执行static程序段):
1、A a = new A();在类加载的时候即进行初始化
2、Class.forName(A);在类加载的时候即进行初始化
3、Class.forName(A,false,classLoader);在newInstance的时候进行初始化
4、classLoader.loadClass(A);在newInstance的时候进行初始化
再看一下类加载器的分层结构
1、最上层是用c++实现的Bootstrap Loader,sun.boot.class.path
2、ExtClassloader,搜寻位置为java.ext.dirs(System.geProperty("java.ext.dirs"))
3、AppClassLoader(也称System Loader),搜寻位置为CLASSPATH
java的类加载器采用(委派模式),即类加载器器先委托父类去加载该类
posted on 2006-07-23 18:58 hama 阅读(474) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: