导航:首页 > 编程语言 > 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用法相关的资料

热点内容
淘宝自适应代码 浏览:970
云计算面试题文件定位路径 浏览:407
电脑蓝屏修工具 浏览:282
红米k40数据线原装多少钱 浏览:939
文件夹选择路径对话框 浏览:691
极客晨星编程什么时候做的 浏览:234
python获取xml文件内容 浏览:957
欧姆龙sfc编程教程 浏览:734
同程旅行App怎么切换账号 浏览:914
微信头像放大另一张 浏览:374
dxf文件名不能有中文吗 浏览:537
一个广义的wpf向导程序对话框 浏览:360
韩国企业网站模板 浏览:268
linux清空目录下的文件命令 浏览:314
全民k歌存在手机哪个文件夹 浏览:546
iphoneios免越狱手机助手 浏览:400
微信js开发教程pdf 浏览:905
at89c51跑马灯程序 浏览:543
windows补丁无法安装程序 浏览:19
linuxoracle双机的集群软件 浏览:308

友情链接