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

热点内容
容积长宽高的数据从什么面测量 浏览:978
苹果手游工作室 浏览:362
数据型号特别多怎么合并 浏览:600
企业微信电脑版怎么无法接受文件 浏览:968
微信个人相册怎么隐藏 浏览:368
上传文件时怎么获取文件全路径 浏览:955
linuxjs读取文件 浏览:104
exe后缀的pdf文件 浏览:381
win8升级到专业版 浏览:487
快图浏览quickpiciphone 浏览:847
app线稿图需要哪些要求 浏览:752
java只能输入汉字 浏览:630
java定义char 浏览:133
excel2007插入压缩文件 浏览:70
怎么设定自己公司的网站 浏览:324
如何在办公软件上直接复制文件 浏览:939
c语言程序设计矩阵运算 浏览:894
影响网络质量因素有哪些 浏览:587
最新win10秘钥在线激活 浏览:192
cad导入su8文件无法使用 浏览:828

友情链接