设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
关于类加载的问题
返回列表
发新帖
关于类加载的问题
[复制链接]
11
|
2
|
2007-10-20 08:38:44
|
显示全部楼层
|
阅读模式
为什么加载数据库驱动的时候都用Class.forName()来加载,不直接new一个驱动呢??
回复
使用道具
举报
千问
|
2007-10-20 08:38:44
|
显示全部楼层
转载http://hi.baidu.com/zhengguobest ... 422082b901a086.html
Class.forName(xxx.xx.xx) 返回的是一个类
首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new 不一样,要分清楚)。
至于什么时候用,你可以考虑一下这个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?只有你提到的这个方法了,不过要再加一点。
A a = (A)Class.forName("pacage.A"
.newInstance();
这和你
A a = new A();
是一样的效果。
关于补充的问题
答案是肯定的,jvm会执行静态代码段,你要记住一个概念,静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了。而且以后不会再走这段静态代码了。
Class.forName(xxx.xx.xx) 返回的是一个类
Class.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段
动态加载和创建Class 对象,比如想根据用户输入的字符串来创建对象
String str = 用户输入的字符串
Class t = Class.forName(str);
t.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构造。
回复
使用道具
举报
千问
|
2007-10-20 08:38:44
|
显示全部楼层
studying
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行
1
为什么QQ空间主页的彩虹字生成器用不了?
2
双相情感障碍能打新冠疫苗吗?
3
最近家属的舒张压过高
4
麻烦发个海川邀请码给我 我回头给您补分 我现在没分了 但急用来着
5
急急急。。好心人帮帮我,买房子是一辈子的大事,请大家指点下?
6
东直门搬家公司,求问!北京东直门搬家公司【附近】电话
7
姨妈推迟第三天了还没有来!
8
水瓶座的男人是不是都有点精神病?
9
甲状腺的手术危险吗
10
艾薇儿婚礼的背景音乐could this be love的伴奏和原曲,邮箱
[email protected]
11
甲减多吃点什么
12
甲状腺滤泡性肿瘤良性 是否要做手术
13
糖尿病人的节日饮食秘笈?
14
请问广州哪里有定期举行的金融理财讲座会?
15
张家港市特警支队招不招队伍军人
16
办公家具采购,(纯广告)
17
如果社会保险在公司交到5个月,但是自己辞职在家没找到作,社保没有按时缴纳,会不会有什么影响。
18
甲亢会会影响月经吗
19
右侧甲状腺低密度影是什么病?
20
颈椎疼脑袋不舒服,可晕
21
低钾吃香蕉就没事了吗?
22
甲状腺肿大它的治疗方法是什么呢
23
我9月4日来的月经 这几个月算正常也不会太疼 但经期我干嘛吃些感冒药 ...
24
身上总长一些红色痣,严重吗
25
南京中央门汽车站能带货到上海吗?
26
甲状腺结节有些疼痛怎么回事
27
求此图周柏豪上身货号!
28
苏州动车票名字写错了能上车吗?
29
脐带血能治脑瘫和发育迟缓吗
30
合肥哪里有启动仪式的冰雕制作呀?
31
诺佛沙星胶囊幼儿可以吗
32
我想买卡片机
33
宝宝走路脚有点内八怎么办
34
小孩感冒我们家长该怎么治疗
35
如果孩子发烧吃美林之后出汗快是不是不好的啊?
36
花冠 2011款 1.6AT 经典版和凯越 2011款 1.6LX-AT哪个好,综合来说下,谢谢。
37
新生儿爱哭是脑瘫吗
38
为什么说通货膨胀是对居民的一种税收?
39
单击按钮修改数据库表字段的值
40
麻烦帮忙看看宝宝便便
41
本人头皮上长绿豆大小的痘痘!
42
最近很劳累姨妈后右侧骶骨哪里隐隐的痛
43
阴道里左侧肿痛,有时候还痒
44
酒精可以清晰光驱激光头嘛?
45
怎样学会看图纸(管道),应该看什么样的书籍。
46
求问:冰棒大魔现在怎么样abc还混的开不
47
大家知道辛店什么地方有卖暖宝宝的吗?药店或超市有吗
48
60等于一个质数乘一个质数加一个质数
49
发烧,手脚肿,身上有红点
50
鼻子上火,擦鼻子有出血。
51
大话西游2的大力套装名字叫什么?
52
我想知道今天乌鲁木齐钢材的价格 谢谢了
53
经常口腔溃疡,是身体缺少什么
54
最近几年晚上尿频3-4次
55
一岁半宝宝脚踝有点往内翻
56
为什么我电脑中word里不能打中文字
57
请问下这种情况是风寒感冒吗
58
铜在空气中加热至大概多少度可变氧化铜
59
在深圳富士康工作准备网购不知道具体地址怎么写
60
闭眼睡觉时眼睛会有酸痛感
61
断奶但宝宝不吃奶瓶怎么办
62
想要韩版秘密花园全集的迅雷种子,有的发我邮箱呀
[email protected]
,谢啦!
63
小红色的痘痘特别痒特别
64
传说『彩虹』是上帝与人的约定?√
65
前一段时间一直在工作,癫痫也没有持续发生的状态
66
孩子脖子右侧有个疙瘩一抹是游走的状态
67
触屏手机把屏幕锁了怎么才能解开啊
68
求糗事百科邀请码,
[email protected]
,谢拉
69
谈一场不是以结婚为目的的恋爱,能坚持多久?对方到底在想什么?
70
眼睛内样特别磨眯着眼睛
71
设a,b是正数,且a^b=b^a,b=9a,则a的值是多少?
72
血管瘤,请问那位专家好
73
黑龙江省安达污水处理厂在哪里,从哈尔滨火车站到那怎么走?
74
请问,三大运营商每月的运营数据在那里可以找到啊,请知道的告知一下,不胜感激~
75
考TOLES一路下来大概多少成本??
76
生完宝宝后要多久耻骨才不会痛
77
百度财富值怎么积累
78
手臂长了很大的一块硬硬的包
79
儿童支原体感染的原因有三?
80
急求作文 幸福是彩虹 ,高悬赏
81
孩子便秘好长时间了,每天排便困难应该怎么办啊?
82
人流后十天同房,阴道少量出血
83
进行过公务员体检的医生来回答
84
硬盘加密工具哪个好? 为什么还是出现很多破解方法,有安全隐患吗?
85
俺闺女八岁了,这段时间老是流鼻血
86
为什么有热惊家族史比没有的好
87
嘴唇周围找痘痘。
88
孩子发烧时可用口服补液盐吗?
89
E7400处理器2G金士顿320G希捷硬盘9600GT显卡技嘉EP45主板这个配置怎样
90
彩虹视霸cy84能升级吗
91
coreldraw X5 绘图区域为什么所有的白色都变成了米黄色?然后所有颜色填充都偏色了。如何设置回来?
92
小孩子大腿疼是什么情况
93
联想家悦2001配置升级
94
中国专利号查询网.我想查询:专利申请号:200820029663.6。这个专利的真实性以及归属公司?谢谢!
95
2011年11月江苏南京成人教育英语三级答案
96
两个月宝宝两天没拉粑粑应该怎么办?