Clsaa.forName(xxx.xxx.xx);
来源:互联网 发布:黑帽seo 编辑:程序博客网 时间:2024/05/15 00:47
1.Clsaa.forName(xxx.xxx.xx);返回一个类即返回对象是Class。
Class.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段
2.new 和 newInstance()
new 关键字 创建一个新类 能调用任何public构造
newInstance 方法 类加载机制 只能调用无参构造器
从JVM的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证:1、这个类已经加载;2、这个类已经连接了。
3.Java中工厂模式经常使用newInstance()方法来创建对象,因此从为什么要使用工厂模式上可以找到具体答案。 例如:
class c = Class.forName(“Example”);
factory = (ExampleInterface)c.newInstance();
其中ExampleInterface是Example的接口,可以写成如下形式:
String className = "Example";
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();
进一步可以写成如下形式:
String className = readfromXMlConfig;//从xml 配置文件中获得字符串
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();
上面代码已经不存在Example的类名称,它的优点是,无论Example类怎么变化,上述代码不变,甚至可以更换Example的兄弟类Example2 , Example3 , Example4……,只要他们继承ExampleInterface就可以。
现在可以看出,newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。 这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了一种降耦的手段。
- Clsaa.forName(xxx.xxx.xx);
- Class.forName(xxx.xx.xx)
- Class.forName(xxx.xx.xx)
- Class.forName(xxx.xx.xx)
- Class.forName("xxx.xx")详解
- 三言两语话Class.forName(xxx.xx.xx)
- Class.forName(xxx.xx.xx) 解耦
- Class.forName(xxx.xx.xx) 的理解
- Class.forName(xxx.xx.xx) 的作用
- Class.forName(xxx.xx.xx) 分析
- Class.forName(xxx.xx.xx) 和newInstance区别
- Class.forName(xxx.xx.xx) 反射的作用啊
- oracle xx.xxx.xxx排序
- 数字格式化xx,xxx,xxx
- 发布项目www.xxx.xx
- linux xxx/xx: 只读文件系统
- 【原】一句话说明Class.forName(xxx.xxx...)是干什么的
- xxx
- C++实现开机启动
- Machine Learning - Andrew Ng on Coursera (Week 4)
- iOS怎么查看.a静态库所有打包进去的.o文件和函数接口信息?
- 分库分表参照
- bzoj2326 矩阵乘法
- Clsaa.forName(xxx.xxx.xx);
- CentOS 上 Jenkins 安装
- Machine Learning - Andrew Ng on Coursera (Week 5)
- viewpager内嵌listview或者girdview无法滑动问题。
- 图片压缩
- 高仿QQ讨论组头像拼图
- 【bzoj2242】[SDOI2011]计算器 快速幂+BSGS
- 广告轮播
- Machine Learning - Andrew Ng on Coursera (Week 6)