深入Java Function: Class.forName()
来源:互联网 发布:mac系统玩不了魔兽 编辑:程序博客网 时间:2024/05/18 16:16
Class.forName(xxx.xx.xx) 返回一个类
首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new 不一样,要分清楚)。
至于什么时候用,可以考虑一下这个问题,给出一个字符串变量,它代表一个类的包名和类名,怎么实例化它?只有提到的这个方法了,不过要再加一点。
A a = (A)Class.forName("pacage.A").newInstance();
这和
A a = new A();
是一样的效果。
A a = (A)Class.forName("pacage.A").newInstance();
这和
A a = new A();
是一样的效果。
相关的补充问题
JVM会执行静态代码段,要记住一个概念,静态代码是和class绑定的,class装载成功就表示执行了静态代码了,以后也就不会再走这段静态代码了。
String str = 用户输入的字符串
Class t = Class.forName(str);
t.newInstance();
Class t = Class.forName(str);
t.newInstance();
class c = Class.forName(“Example”);
factory = (ExampleInterface)c.newInstance();
String className = "Example";
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();
String className = readfromXMlConfig;//从xml 配置文件中获得字符串
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();
只要它们继承ExampleInterface也就是factory就可以。
而完成上面两个步骤的正是Class的静态方法forName()所完成的,这个静态方法调用了启动类加载器,即加载 java API的那个加载器。
forName() 和 ClassLoader 的 loadClass 方法。
1、forName(String className)单参数时, initialize=true
2、forName(String className, boolean initialize, ClassLoader loader)
1、loadClass(String name)单参数时, resolve=false
2、loadClass(String name, boolean resolve)
0 0
- 深入Java Function: Class.forName()
- java下Class.forName
- java class.forName
- Java Class.forname
- java Class.forName 介绍
- Java Class.forName() Sqlite
- java Class.forName("") .newInstance();
- java Class.forName("") .newInstance();
- Java Class.forname
- java Class.forName详解
- java下Class.forName
- Java Class.forName()
- java class.forName的作用
- zz:java下Class.forName
- java反射机制---Class.forName("")
- 浅谈java里Class.forName
- java之-forName和Class
- java class.forname method.invoke
- 第二周作业
- yii分页组件的使用
- 用MonoDevelop调试Unity3D脚本
- 一些内核学习网站和博客
- 数据源的编写(开发中不写)、使用动态代理覆写Connection的close方法
- 深入Java Function: Class.forName()
- E观天下:中国应该如何拥抱大数据时代?
- 内核中的多点触摸协议文档 Multi-touch (MT) Protocol
- Android学习笔记(四)模拟器加速
- intellij idea 添加JDK 并创建项目
- jquery插件开发
- 在给定的数组中找出两个元素和为给定值的所有元素对
- Java类型转化报错
- android 异常2