class fornameJava加载数据库连接驱动,为什么要用Class.forName()方法?

class forname  时间:2022-02-23  阅读:()

反射中Class.forName和Classloader的区别

Class的装载分了三个阶段,loading,linking和initializing,分别定义在The Java Language Specification的12.2,12.3和12.4。 Class.forName(className) 实际上是调用Class.forName(className, true, this.getClass().getClassLoader())。注意第二个参数,是指Class被loading后是不是必须被初始化。 ClassLoader.loadClass(className)实际上调用的是ClassLoader.loadClass(name, false),第二个参数指出Class是否被link。 区别就出来了。Class.forName(className)装载的class已经被初始化,而ClassLoader.loadClass(className)装载的class还没有被link。 一般情况下,这两个方法效果一样,都能装载Class。但如果程序依赖于Class是否被初始化,就必须用Class.forName(name)了。 例 如,在JDBC编程中,常看到这样的用法,Class.forName(.mysql.jdbc.Driver"),如果换成了 getClass().getClassLoader().loadClass(.mysql.jdbc.Driver"),就不行。

java 中Class.forName();是什么函数

类加载,根据某个类编译之后的class文件的名称,去加载这个类,然后可以调用该类里面的方法函数等

Class.forName

Class.forName("java.lang.String"); 类的全限名 getConnection(url,username,password); url - jdbc:subprotocol:subname 形式的数据库 url user - 数据库用户,连接是为该用户建立的 password - 用户的密码

求问java 中的Class.forName("String");是什么东西?

晕.. 拜托那些没学明白的人 不会就别乱回答别人的问题好么.. 或许我这么写你就明白了.. Class.forName(string className); 该方法的参数是一个字符串类型的参数,这句话的意思是要把传进去的字符串当作一种类型试着加载到内存中,比如 你学Java肯定学过连接数据库的类吧... 最一开始的写法肯定是要把数据库驱动类加载到内存Class.forName(&.microsoft.sqlserver.jdbc.SQLServerDriver");这句话的意思就是说.. 要.microsoft.sqlserver.jdbc.SQLServerDriver这个类型加载到内存中仅此而已.. [原创答案,复制可耻 -- l.a.r]

谁能帮我解释一下Class.forName("oracle.jdbc.driver.OracleDriver");

这个是Java的反射机制 oracle.jdbc.driver.OracleDriver 是一个类的名字 Class.forName("oracle.jdbc.driver.OracleDriver"); //此句是通过字符串来查找类,返回的是一个Class类的对象,这句的作用是让系统加载该类,系统加载同时会自动调用该数据库驱动类的static块完成初始化工作(在这里是注册数据库驱动) lz这个是一个典型的JDBC加载驱动的语句 关于反射 参看/art/3539/20070924/1222147_1.html 以及官方API文档和向导文档 需要更详细的信息,可以给我发消息或者用HI

Class.forName()里面的内容怎么填写呢?

Class.forName(&.mysql.jdbc.Driver"); String url = "jdbc:mysql://127.0.0.1/test?useUnicode=true&characterEncoding=utf-8"; String user = ""; String psw = ""; Connection con = DriverManager.getConnection(url,user,psw); 首先,Class.forName(xxxxx)并不是实例化驱动,是返回一个类模板,也就是class对象。这样做的目的是:将驱动类的class文件加载到内存中。

关于Class.forName(driverName).newInstance();

在初始化一个类,生成一个实例的时候,newInstance()方法和new关键字除了一个是方法,一个是关键字外,最主要有什么区别?它们的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类。那么为什么会有两种创建对象方式?这主要考虑到软件的可伸缩、可扩展和可重用等软件设计思想。 Java中工厂模式经常使用newInstance()方法来创建对象,因此从为什么要使用工厂模式上可以找到具体答案。 例如: class c = Class.forName(“Example”); factory = (ExampleInterface)c.newInstance(); 其中ExampleInterface是Example的接口,可以写成如下形式: String className = "Example"; class c = Class.forName(className); factory = (ExampleInterface)c.newInstance(); 进一步可以写成如下形式: String className = readfromXMlConfig;//从xml 配置文件中获得字符串 class c = Class.forName(className); factory = (ExampleInterface)c.newInstance(); 上面代码已经不存在Example的类名称,它的优点是,无论Example类怎么变化,上述代码不变,甚至可以更换Example的兄弟类Example2 , Example3 , Example4……,只要他们继承ExampleInterface就可以。 从JVM的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证:1、这个类已经加载;2、这个类已经连接了。而完成上面两个步骤的正是Class的静态方法forName()所完成的,这个静态方法调用了启动类加载器,即加载java API的那个加载器。 现在可以看出,newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。 这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了一种降耦的手段。 最后用最简单的描述来区分new关键字和newInstance()方法的区别: newInstance: 弱类型。低效率。只能调用无参构造。 new: 强类型。相对高效。能调用任何public构造。

class forName("com.microsoft.jdbc.sqlserver.SqlserverDriver");//这句话是什么意思。希望高手讲明白点

显示的加载一个用户要使用的数据库(类)的驱动程(也叫做注册驱动程序,把驱动程序的类加载到JVM中) 以下是不同数据库公司提供的驱动类,请参考下~~ [Class.forName(driver);] //Oracle的: String driver=”oracle.jdbc.driver.OracleDriver”; //MySQL的: String driver=.mysql.odbc.Driver”; //SQL Server的: String driver=.microsoft.jdbc.sqlserver.SQLServer-Driver”;

Java中的getName,class 和forName的区别

没有getName,只有实例化对象.getClass().getName(); 获取class名称。例如: String?name?=?""; name.getClass().getName();Class.forName();是为了获取class的字节码,是映射。例如: Class?clazz?=?Class.forName("java.lang.String"); String?newInstance?=?(String)?clazz.newInstance();

MYsql数据库 jdbc class.forname

你把驱动包加载到项目里去了吗 就是说你的项目里有没有多一项Referenced Libranes 还有你的url好像没有写上mysql数据库的端口号:3306,或者是你自己定义的

Class后面.forName();这个函数找不到,是怎么回事?

语法错了,要写到方法里面, public?class?Test?{ ????public?static?void?main()?{ ????????try?{ ????????????Class.forName("Test"); ????????} ????????catch?(Exception?e)?{ ????????} ????} }

Java中Class.forName和ClassLoader.loadClass的区别

Class.forName(className)装载的class已经被初始化,而ClassLoader.loadClass(className)装载的class还没有被link。 forName支持数组类型,loadClass不支持数组 一般情况下,这两个方法效果一样,都能装载Class。但如果程序依赖于Class是否被初始化,就必须用Class.forName(name)了

java 中的class.forName()是什么意思

class.forName()是运用反射的原理创建对象 通俗地说,平时我们创建对象都是用Studeng s = new Studeng()的方式,而class.forName()也是创建对象的一种方式,等你学了反射就知道了。现在你只要知道class.forName()是创建了一个对象就可以

谁能详细帮我解释一下.class()、getClass()、Class.forName()、getClassLoader()的区别和联系

你好! 有,例如String.class,代表的是调用字节码文件,来获取一个String的类型。 对一楼的回答进行补充。 希望对你有所帮助,望采纳。

关于java中Class.forName() !

Class.forName()是返回一个类 new 是创建一个对象 Class.forName(xx.xx.xx).newInstance()就是获取一个类并创建对象的意思

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

首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new 不一样,要分清楚)。 至于什么时候用,你可以考虑一下这个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?只有你提到的这个方法了,不过要再加一点。 A a = (A)Class.forName("pacage.A").newInstance(); 这和你 A a = new A(); 是一样的效果。 关于补充的问题 答案是肯定的,jvm会执行静态代码段,你要记住一个概念,静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了。而且以后不会再走这段静态代码了。 你可以编个小程序看看就知道了。。。

请问下Class.forName的作用?为什么要用?

调用该访问返回一个以字符串指定类名的类的对象。 说明:Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。 Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。

关于forClass,getClass,forName方法

一个java.lang.Class对象代表了Java应用程序在运行时所加载的类或接口实例,也就是说被加载的类在JVM中以Class的实例存在,Class对象由JVM自动产生。通过Object的getClass()方法来获取每一个对象对应的Class对象,或的Class对象之后可以用Class对象上的方法取得类的信息。 在一些应用程序中,无法事先知道用户将加载什么类,而必须用户指定类名称以加载类,可以用Class的静态方法forName()方法实现动态加载类。forClass()我不知道是做什么的。下面是例子: import java.lang.reflect.*; public class ClassDemo { public static void main(String[] args) { System.out.println("****************getClass()的例子******************* "); String name="john"; //获得name对象的Class实例 Class stringClass=name.getClass(); //下面可以用stringClass实例获取name对象的相关信息,可以看API文档,这里只举两个方法 System.out.println("name对象的类型:"+stringClass.getName()); System.out.println("name对象的父类:"+stringClass.getSuperclass().getName()); System.out.println(" ****************forName()的例子******************* "); //举forName()的例子 //动态加载java.util.ArrayList类 //得到类的Class实例后利用Class的方法取得类相关信息 //里面有好多方法我就不解释了,你可以参考API文档 try { Class c=Class.forName("java.util.ArrayList"); int mod=c.getModifiers(); System.out.print(Modifier.toString(mod)); if(Modifier.isInterface(mod)) System.out.print(" interface"); else System.out.print(" class "); System.out.println(c.getName()+"{"); System.out.println(" //********成员变量**********"); Field[] field=c.getDeclaredFields(); for(Field f:field) { System.out.print(" "+Modifier.toString(f.getModifiers())); System.out.print(" "+f.getType().getName()); System.out.println(" "+f.getName()+";"); } System.out.println(" //********构造方法**********"); Constructor[] constructor=c.getDeclaredConstructors(); for(Constructor con:constructor) { System.out.print(" "+Modifier.toString(con.getModifiers())); System.out.println(" "+con.getName()+"();"); } System.out.println(" //*********成员方法*************"); Method[] method=c.getDeclaredMethods(); for(Method mhd:method) { System.out.print(" "+Modifier.toString((mhd.getModifiers()))); System.out.print(" "+mhd.getReturnType().getName()); System.out.println(" "+mhd.getName()+"()"); } System.out.println("}"); } catch(Exception e) { e.printStackTrace(); } } }

24. Class的forName方法的作用是( ) A、注册类名 B、注册数据库驱动程序 C、创建类

我怎么发现都说的不准,forName的作用主要就是讲硬盘上的java类给加载到内存中。

用class.forName()创建对象为什么一定要强制转换

不转换的话就是一个class类的对象 注意是class类~一个普通类也是继承Object类的类

java 谁来帮我讲解下Class.forname()方法和Class.forname().newInstance()方法

这是有关反射的,如下解释: String str = "T"; Class c = Class.forName(str); //获取以T为类名的类 Object o = c.newInstance(); //实例化c

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

要调用带参数的方法invoke方法

举个例子:

; import java.lang.reflect.Method; public class InvokeMethod {    public static void main(String args[]){     try     {      //动态加载Student类      Class student = Class.forName(.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();     }    } }

求class.forname的用法。。(java)

public static Class<?> forName(String className) throws ClassNotFoundException 返回与带有给定字符串名的类或接口相关联的 Class 对象。调用此方法等效于: Class.forName(className, true, currentLoader) 其中 currentLoader 表示当前类的定义类加载器。 例如,以下代码片段返回命名为 java.lang.Thread 的类的运行时 Class 描述符。 Class t = Class.forName("java.lang.Thread") 调用 forName("X") 将导致命名为 X 的类被初始化。 参数: className - 所需类的完全限定名。 返回: 具有指定名的类的 Class 对象。 抛出: LinkageError - 如果链接失败 ExceptionInInitializerError - 如果此方法所激发的初始化失败 ClassNotFoundException - 如果无法定位该类 以上是jdk文档的说明 返回的是--- 带有给定字符串名的类或接口相关联的 Class 对象--- 相关联的Class对象。。即这个Class对象里包含了这个类活接口的信息。。比如方法,属性等。。 可以用来加载类。。因为---调用此方法等效于: Class.forName(className, true, currentLoader) 其中 currentLoader 表示当前类的定义类加载器。 ---- 即调用这个方法的话currentLoader这个类加载器就会加载这个类。。 用得最多的就是反射了。。即你只需要告诉我类名我就能调用你的方法。。设置你的属性。。 所以我可以在你的类还没写的时候就调用你的类的方法--很抽象吧。。 因为我将类名设成我方法的参数或者是你的类的对应的Class对象设为参数。。 这样我可以通过它获得方法。。然后调用。。你用我写的东西的时候把类名或者是对应的Class对象传给我就是了。。

java 连接数据库中的class.forname()在数据库中起什么作用,是给ManagerDriver类提供驱动器的查找范围吗

Class.forName("String");这个String对象就是你数据库的驱动,这个代码的意思是加载你数据库的驱动,这样你在下面的程序在才能给创建对于数据库的连接,对数据库进行一系列的操作

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")的含义

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") 这个是反射机制,就是来调用jdbc-odbc驱动的,这个不是你安装的,而是你一个jar包, 而sun.jdbc.odbc.JdbcOdbcDriver就是jar包里面的一个类, Class.forName()就是用来调用JdbcOdbcDriver,直白的就是加载和注册一个驱动程序。 驱动可以看作是接口的另外一种说法,比如你的手机驱动,光盘驱动,其实这些驱动都是你通信的接口,只是这里叫做驱动而已。

JDBC操作中为什么Class.forName()后面的 newInstance()不写也可以

static Class<?> forName(String className) 返回与带有给定字符串名的类或接口相关联的 Class 对象。
T newInstance() 创建此 Class 对象所表示的类的一个新实例。

简述一下Class.forName的作用?

类是程序的一部分,每个类都有一个Class对象,即每当编写并且编译了一个新类,就会产生一个Class对象,在运行时,当我们想生成这个类的对象时,运行这个程序的jvm会首先检查这个类的Class对象是否已经加载,如未加载,jvm就会根据类名查找 .class文件,并将其载入. 而Class.forName("A")不仅产生class对象而且有个副作用:如果类A没有被加载,就加载它!

百度里面找到的,不明白,术业有专攻啊!

/%C7%A6%B1%CA/blog/item/6b0d5343e52266179213c668.html

上面这个地址里有啊,百度里也可以搜到的!你可以了解一下!我是不明白!

Java加载数据库连接驱动,为什么要用Class.forName()方法?

目的是为了实例化对象。 Class.forName("")返回的是类 Class.forName("").newInstance()返回的是object 刚才提到,Class.forName("");的作用是要求JVM查找并加载指定的类,如果在类中有静态初始化器的话,JVM必然会执行该类的静态代码 段。而在JDBC规范中明确要求这个Driver类必须向DriverManager注册自己,即任何一个JDBC Driver的 Driver类的代码都必须类似如下: public class MyJDBCDriver implements Driver {static {DriverManager.registerDriver(new MyJDBCDriver());}}既然在静态初始化器的中已经进行了注册,所以我们在使用JDBC时只需要Class.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 e you will never use in usual, so you need not to create it. 总结:jdbc数据库驱动程序最终的目的,是为了程序员能拿到数据库连接,而进行jdbc规范的数据库操作。拿到连接的过程是不需要你自己来实例化驱动程序的,而是通过 DriverManger.getConnection(string str); 。因此一般情况下,对于程序员来说,除非特别需求,是不会自己去实例化一个数据库驱动使用里面的方法的。

  • class fornameJava加载数据库连接驱动,为什么要用Class.forName()方法?相关文档

青云互联-洛杉矶CN2弹性云限时五折,9.5元/月起,三网CN2gia回程,可选Windows,可自定义配置

官方网站:点击访问青云互联官网优惠码:五折优惠码:5LHbEhaS (一次性五折,可月付、季付、半年付、年付)活动方案:的套餐分为大带宽限流和小带宽不限流两种套餐,全部为KVM虚拟架构,而且配置都可以弹性设置1、洛杉矶cera机房三网回程cn2gia 洛杉矶cera机房                ...

ZJI(月付450元),香港华为云线路服务器、E3服务器起

ZJI发布了9月份促销信息,针对香港华为云线路物理服务器华为一型提供立减300元优惠码,优惠后香港华为一型月付仅450元起。ZJI是原来Wordpress圈知名主机商家:维翔主机,成立于2011年,2018年9月更名为ZJI,提供中国香港、台湾、日本、美国独立服务器(自营/数据中心直营)租用及VDS、虚拟主机空间、域名注册等业务,商家所选数据中心均为国内访问质量高的机房和线路,比如香港阿里云、华为...

Webhosting24:$1.48/月起,日本东京NTT直连/AMD Ryzen 高性能VPS/美国洛杉矶5950X平台大流量VPS/1Gbps端口/

Webhosting24宣布自7月1日起开始对日本机房的VPS进行NVMe和流量大升级,几乎是翻倍了硬盘和流量,价格依旧不变。目前来看,日本VPS国内过去走的是NTT直连,服务器托管机房应该是CDN77*(也就是datapacket.com),加上高性能平台(AMD Ryzen 9 3900X+NVMe),还是有相当大的性价比的。此外在6月30日,又新增了洛杉矶机房,CPU为AMD Ryzen 9...

class forname为你推荐
sdf弱电SDF什么意思strcatc语言,怎么使用 strcat字符串连接函数,程序如图。ISDNisdn是什么意思联想网盘联想网盘登陆showwindowVB6.0中ShowWindow函数的使用mindmanager破解版xmind mac破解版哪个好用拓扑关系什么是空间数据的拓扑关系tvosTVOS系统是什么?arc是什么意思数学中的arctan是什么意思数秦科技安徽数智通科技有限公司怎么样?
美国加州vps ipage 亚洲大于500m 新世界电讯 lighttpd lamp配置 有益网络 网络空间租赁 太原网通测速平台 能外链的相册 流媒体加速 中国电信网络测速 湖南idc 卡巴斯基试用版下载 广州主机托管 shuangcheng 免费的加速器 web服务器有哪些 卡巴斯基免费版下载 卡巴斯基免费版 更多