JAVA中,Class.forName()是做什么用的?当我使用一个类的时候,直接使用不…
1、可以 Class c = Class.forName(xxx.xxx.ContextImpl);Context ctx = (Context)c.newInstance(xx,xxx);就可以直接调用ctx.getXXXX之类的了。
2、Class.forName是从指定的classloader中装载类,如果没有指定,也就是一个参数的时候,是从装载当前对象实例所在的classloader中装载类。
3、首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new 不一样,要分清楚)。
java下Class.forName的作用是什么,为什么要使用它
用来动态的创建对象。如我们最常用的jdbc, 经常会用Class.forName来加载数据库驱动。因为在jdbc接口中,可能会存在各种数据库的驱动,不在在接口中写死。所以需要我们调用的时候通过Class.forName来加载驱动。
\x0d\x0a例如:Test类在org.abc这个包里,那么可以用Class.forName(org.abc.Test);这样就返回一个Test类的class对象,拿到这个对象接下来可以做很多事,调用这个类的方法,属性,构造方法等,具体你去研究下反射技术。
Class.forName(String className)的作用有两个,第一是CLASSPATH下指定名字的.class文件加载到Java虚拟机内存中, 第二是初始化这个类。
你只需要提供几个 参数给 这个类,这个类就能完成所有相关功能。只要是实现了某个具体功能的包装 都可以写成 class ,也最好写成 class ,具体的你还是看下 java 的基础书吧。
求class.forname的用法。。(java)
Class.forName(className, true, currentLoader)其中 currentLoader 表示当前类的定义类加载器。例如,以下代码片段返回命名为 java.lang.Thread 的类的运行时 Class 描述符。
首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new不一样,要分清楚)。Aa=(A)Class.forName(pacage.A).newInstance();这和你Aa=newA();是一样的效果。
Class.forName(类名)表示尝试调用这个类,如果这个类不可用的话会抛出异常。
method。比如当你知道可以import Context 却不可以import ContextImpl的话,可以 Class c = Class.forName(xxx.xxx.ContextImpl);Context ctx = (Context)c.newInstance(xx,xxx);就可以直接调用ctx.getXXXX之类的了。
Class.forName(XXXX);的作用是要求JVM查找并加载指定的类,如果在类中有静态初始化的话,JVM必然会执行该类的静态代码段,这时是不确定该类是否已经在JVM中加载。而XXXX.class是在JVM中加载已经加载过的类。