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

热点内容
免费qq在线客服代码 浏览:615
网络摄像机和麦克风的使用点不了 浏览:872
win10资源文件夹卡死 浏览:431
联想笔记本如何添加网络连接 浏览:821
钉钉文件下载到微信用哪个浏览器 浏览:252
word怎么删掉第一页 浏览:215
为什么小米5不能升级系统 浏览:768
复古摄影教程 浏览:803
u盘里文件显示文件夹空 浏览:574
如何编程年月日的进制 浏览:351
升级电脑硬件注意什么 浏览:827
cnc铣床多主轴如何编程 浏览:640
怎么下载网站所有图片 浏览:967
远程传文件最快的软件下载 浏览:425
怎么弄电影网站 浏览:209
淘宝编程培训班怎么样 浏览:732
公文系统物理文件 浏览:903
c语言编程变量幂怎么写 浏览:73
bat文件怎么写 浏览:117
http网络劫持怎么解决 浏览:636

友情链接