通过classLoader加载一个类有什么作用,和创建对象有什么区别。还有既然可以创建对象,为什么还要加载类?
解决方案 »
- 在<ui><foreach><li>放图片firefox显示 IE不显示求大神!!!
- Hebernate one-to-many 中set 方法读取记录集固定多个记录
- hibernate 向 mysql 数据库 存中文..
- 有没有人可以帮忙用mvc做个简单的jsp购物网站
- 请教关于Web的问题
- 一个关于小型空港仿真程序,有谁做过类似的东西,请把代码发给我,万分感谢,再线急等!
- 急!!!!!!!!!!!!
- 请问java应用程序的汉字处理问题
- 不知道有人问过了没有?jb9自带的tomcat的连接池配置??
- 清高手提供entity bean的编写存储数据库的方法!
- textarea 光标定位问题
- spring不能注入的问题
如果要有所调整,就要改代码重新编译。通过ClassLoader加载类,只需要一个名字,你就可以创建一个类的实例,
所以,真正要创建的类名,可以做成一个配置项,独立于程序的编译和发布。如果没有这种动态类加载技术,像JDBC、Spring、Struts等各类框架基本上就都没有办法工作了(因为这些框架都是在配置文件中配置了大量的类,如:Action,Bean,Service等)。----------------参考这篇文章:
http://java.sun.com/developer/technicalArticles/ALT/Reflection/index.html
类的实例,你的意思应该是特指"Class"这个类的实例,
没有所谓的对象的实例,实际上都是类的实例,
只是,Class这个类的实例,代表的是一个java类自身的信息(可以称为元数据)。Class.forName("com.mysql.jdbc.Driver")
这句话创建了Class这个类的一个实例,
该实例描述的是:com.mysql.jdbc.Driver这个类的定义。实际上它和普通类没有本质的差异。
在java中,第一次new一个对象,实际上做了两件事儿:
创建了这个对象的Class实例(就是你说的静态变量初始化啥的),这一步只在第一次new类的时候做
再创建这个类的一个对象。这些实际上都是虚拟机的工作,
但现在java开放了这个功能,允许我们自己写的程序来加载类,
和系统完成的功能没有差异,只是要强调 动态 , 我们的程序可以动态的决定加载哪个类。