导航:首页 > 编程语言 > javaclassforname用法

javaclassforname用法

发布时间:2024-07-14 22:35:37

java鍔犺浇鏁版嵁搴撹繛鎺ラ┍鍔锛屼负浠涔堣佺敤Class.forName()鏂规硶

鐩鐨勬槸涓轰簡瀹炰緥鍖栧硅薄銆

Class.forName("")杩斿洖鐨勬槸绫

Class.forName("").newInstance()杩斿洖鐨勬槸object

鍒氭墠鎻愬埌锛孋lass.forName("");鐨勪綔鐢ㄦ槸瑕佹眰JVM鏌ユ壘骞跺姞杞芥寚瀹氱殑绫伙紝濡傛灉鍦ㄧ被涓鏈夐潤鎬佸垵濮嬪寲鍣ㄧ殑璇濓紝JVM蹇呯劧浼氭墽琛岃ョ被鐨勯潤鎬佷唬鐮 娈点傝屽湪JDBC瑙勮寖涓鏄庣‘瑕佹眰杩欎釜Driver绫诲繀椤诲悜DriverManager娉ㄥ唽鑷宸憋紝鍗充换浣曚竴涓狫DBC Driver鐨 Driver绫荤殑浠g爜閮藉繀椤荤被浼煎備笅锛
public class MyJDBCDriver implements Driver {static {DriverManager.registerDriver(new MyJDBCDriver());}}鏃㈢劧鍦ㄩ潤鎬佸垵濮嬪寲鍣ㄧ殑涓宸茬粡杩涜屼簡娉ㄥ唽锛屾墍浠ユ垜浠鍦ㄤ娇鐢↗DBC鏃跺彧闇瑕丆lass.forName(XXX.XXX);灏卞彲浠ヤ簡銆

we just want to load the driver to jvm only, but not need to user the instance of driver, so call Class.forName(xxx.xx.xx) is enough, if you call Class.forName(xxx.xx.xx).newInstance(), the result will same as calling Class.forName(xxx.xx.xx), because Class.forName(xxx.xx.xx).newInstance() will load driver first, and then create instance, but the instacne you will never use in usual, so you need not to create it.

鎬荤粨锛歫dbc鏁版嵁搴撻┍鍔ㄧ▼搴忔渶缁堢殑鐩鐨勶紝鏄涓轰簡绋嬪簭鍛樿兘鎷垮埌鏁版嵁搴撹繛鎺ワ紝鑰岃繘琛宩dbc瑙勮寖鐨勬暟鎹搴撴搷浣溿傛嬁鍒拌繛鎺ョ殑杩囩▼鏄涓嶉渶瑕佷綘鑷宸辨潵瀹炰緥鍖栭┍鍔ㄧ▼搴忕殑锛岃屾槸閫氳繃 DriverManger.getConnection(string str); 銆傚洜姝や竴鑸鎯呭喌涓嬶紝瀵逛簬绋嬪簭鍛樻潵璇达紝闄ら潪鐗瑰埆闇姹傦紝鏄涓嶄細鑷宸卞幓瀹炰緥鍖栦竴涓鏁版嵁搴撻┍鍔ㄤ娇鐢ㄩ噷闈㈢殑鏂规硶鐨勩

❷ 请问java下Class.forName的作用是什么,为什么要使用它

Class.forName(xxx.xx.xx) 返回的是一个类
Class.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码

❸ java下Class.forName的作用是什么,为什么要使用它

首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new不一样,要分清楚)。 Aa=(A)Class.forName("pacage.A").newInstance();这和你Aa=newA(); 是一样的效果。 关于补充的问题 答案是肯定的,jvm会执行静态代码段,你要记住一个概念,静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了。而且以后不会再走这段静态代码了。 Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段 动态加载和创建Class对象,比如想根据用户输入的字符串来创建对象 Stringstr=用户输入的字符串 Classt=Class.forName(str); t.newInstance(); classc=Class.forName(Example); factory=(ExampleInterface)c.newInstance(); 其中ExampleInterface是Example的接口,可以写成如下形式: StringclassName="Example"; classc=Class.forName(className); factory=(ExampleInterface)c.newInstance(); 进一步可以写成如下形式: StringclassName=readfromXMlConfig;//从xml配置文件中获得字符串 classc=Class.forName(className); factory=(ExampleInterface)c.newInstance(); 从JVM的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证:1、这个类已经加载;2、这个类已经连接了。而完成上面两个步骤的正是Class的静态方法forName()所完成的,这个静态方法调用了启动类加载器,即加载javaAPI的那个加载器。 现在可以看出,newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了一种降耦的手段。 最后用最简单的描述来区分new关键字和newInstance()方法的区别: newInstance:弱类型。低效率。只能调用无参构造。 new:强类型。相对高效。

❹ java中 Class.forName("XXXX").....;与XXXX.class....有什么区别

Class.forName("XXXX");的作用是要求JVM查找并加载指定的类,如果在类中有静态初始化的话,JVM必然会执行该类的静态代码段,这时是不确定该类是否已经在JVM中加载。而XXXX.class是在JVM中加载已经加载过的类。

❺ JAVA反射中通过Class.forname()如何带参数的方法怎么赋值和调用呀

要调用带参数的方法方法举个例子:package com;
import java.lang.reflect.Method;
public class InvokeMethod {
public static void main(String args[]){
try
{
//动态加载Student类
Class student = Class.forName("com.Student");
//获取Student类名称为printInfo的方法
Method method1 = student.getMethod("printInfo");
//调用printInfo方法
method1.invoke(student.newInstance());
//获取Student类名称为printInfo的方法,String.class是方法的参数类型
Method method2 = student.getMethod("printAddress",String.class);
//调用printAddress方法,其中HK是为方法传递一个参数值
method2.invoke(student.newInstance(),"hello关知红");
}catch(Exception e)
{
e.printStackTrace();
}
}
}

❻ JAVA反射中通过Class.forname()如何带参数的方法怎么赋值和调用呀

用Class.forName方法动态加载构造方法带参数的类。

❼ JAVA 获取class对象 类名.class Class.forName()两种方法什么情况下使用 为什么

Class.forName()是根据类名称来加载类 比如有一个类源名为com.abc.AAA 此处Class.forName(‘com.abc.AAA ’).newInstance()就会创建一个AAA对象而.class一般用来获取类的通用属性 比如AAA.class.getDeclareMethod()是获取AAA类的所有声明的方法 主要用于反射机制

❽ java下Class.forName的作用是什么,为什么要使用它

首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new不一样,要分清楚)。
Aa=(A)Class.forName("pacage.A").newInstance();这和你Aa=newA();
是一样的效果。
关于补充的问题
答案是肯定的,jvm会执行静态代码段,你要记住一个概念,静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了。而且以后不会再走这段静态代码了。
Class.forName(xxx.xx.xx)返回的是一个类
Class.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段
动态加载和创建Class对象,比如想根据用户输入的字符串来创建对象
Stringstr=用户输入的字符串
Classt=Class.forName(str);
t.newInstance();
classc=Class.forName(Example);
factory=(ExampleInterface)c.newInstance();
其中ExampleInterface是Example的接口,可以写成如下形式:
StringclassName="Example";
classc=Class.forName(className);
factory=(ExampleInterface)c.newInstance();
进一步可以写成如下形式:
StringclassName=readfromXMlConfig;//从xml配置文件中获得字符串
classc=Class.forName(className);
factory=(ExampleInterface)c.newInstance();
从JVM的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证:1、这个类已经加载;2、这个类已经连接了。而完成上面两个步骤的正是Class的静态方法forName()所完成的,这个静态方法调用了启动类加载器,即加载javaAPI的那个加载器。
现在可以看出,newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了一种降耦的手段。
最后用最简单的描述来区分new关键字和newInstance()方法的区别:
newInstance:弱类型。低效率。只能调用无参构造。
new:强类型。相对高效。

❾ JAVA反射中通过Class.forname()如何带参数的方法怎么赋值和调用呀

forName()是java.lang.Class类的一个方法, 如下
static Class forName(String className) :

返回与带有给定字符串名的类或接口相关联的 Class 对象 。
这句话说的太绕专口了,举属个例子吧:

Class t = Class.forName("java.lang.Thread")
执行完这句话,Thread类将被虚拟机加载了
类加载以后就可以创建实例,调用属性和方法喽。

阅读全文

与javaclassforname用法相关的资料

热点内容
要我苹果账号密码忘记了怎么办 浏览:578
快快卡在配置游戏文件 浏览:393
数据包重发时间怎么调整 浏览:882
youtubeapp怎么下载 浏览:366
编程检测是什么 浏览:753
网络摄像机的传输距离 浏览:941
超值猫qq群购秒杀群 浏览:138
pdf文件能备注吗 浏览:174
html可视化数据源码在哪里 浏览:387
adobereader专用卸载工具 浏览:28
vivo手机数据如何备份 浏览:888
ithmb文件转换器 浏览:66
看病找什么网站好 浏览:579
linux如何查看文件系统 浏览:581
linux统计点频率 浏览:627
全民泡泡大战安琪儿升级 浏览:620
编程scratch如何保存 浏览:750
aspnetmvc传json 浏览:132
如何下载看神片的狐狸视频app 浏览:579
怎样将木纹文件添加到cad 浏览:223

友情链接