首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
Java
J2SE / 扩展类
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结帖去...
管理菜单
页面风格切换
标准风格
老版本论坛
关于java 动态强制转换的问题
[已结帖,结帖人:lichongkk]
加为好友
发送私信
在线聊天
lichongkk
等级:
可用分等级:
贫农
总技术分:
25
总技术分排名:
166987
结帖率:
100.00%
发表于:
2008-11-18 17:59:14
楼主
简单的用类来表示:
数据:
父类 Father
子类 Son1 , son2 , son3,.....sonN.
数据载体:
Bean 类用来成装数据
方法 public Father getdata();
变量 String class_name="包名.子类名"
数据结构:
beanList <Bean>
需求:
当我调用Bean 的getData方法时 我想通过判断 class_name的值来 强制转换成相应的子类
类似于 Son1 son1=(参数--子类名) bean.getData();
也就时说 我想 动态的进行强制转换 请大侠们出手相助.
问题点数:
100
回复次数:
22
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
laorer
堕落佛
等级:
可用分等级:
掌柜
总技术分:
13224
总技术分排名:
1398
发表于:
2008-11-18 18:05:10
1
楼 得分:
20
如果可以用 多态,建议还是用多态,
本来觉得可以用 反射解决的,不过对反射又不熟
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
laorer
堕落佛
等级:
可用分等级:
掌柜
总技术分:
13224
总技术分排名:
1398
发表于:
2008-11-18 18:08:26
2
楼 得分:
0
if("Son1".equals(参数--子类名)){
Son1 son1=(Son1) bean.getData();
}else if (){
...
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
link_1029
该用户很懒,没有设置昵称
等级:
可用分等级:
长工
总技术分:
498
总技术分排名:
66332
发表于:
2008-11-18 18:15:20
3
楼 得分:
5
引用 2 楼 laorer 的回复:
if("Son1".equals(参数--子类名)){
Son1 son1=(Son1) bean.getData();
}else if (){
...
就这样吧
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
link_1029
该用户很懒,没有设置昵称
等级:
可用分等级:
长工
总技术分:
498
总技术分排名:
66332
发表于:
2008-11-18 18:18:20
4
楼 得分:
20
反射出来的对象所申明的类型也是Object类的,所以我觉得反射也不能解决动态强制转换的问题
只能自己申明对象的类型了,所以能用多态尽量还是不要强制转换了
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
showde123
海角不是天涯
等级:
可用分等级:
中农
总技术分:
546
总技术分排名:
52247
发表于:
2008-11-18 20:17:35
5
楼 得分:
5
关注 帮顶
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
PorterChou
Zourva
等级:
可用分等级:
长工
总技术分:
157
总技术分排名:
89654
发表于:
2008-11-18 20:28:48
6
楼 得分:
20
反射是根据名字动态加载类,得到实例。这个情况是,已经有实例了,但要动态向下转型,只能考虑if-else或者工厂.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lichongkk
等级:
可用分等级:
贫农
总技术分:
25
总技术分排名:
166987
发表于:
2008-11-19 09:04:22
7
楼 得分:
0
回4楼和2楼 我也考虑过用多态来做 (就是用if语句的 )
问题的关键是我的子类太多了. 这样做的话,一是效率肯定会有问题 .二是代码两太庞大了 .
所以才考虑这样做的
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lichongkk
等级:
可用分等级:
贫农
总技术分:
25
总技术分排名:
166987
发表于:
2008-11-19 09:06:27
8
楼 得分:
0
引用 6 楼 PorterChou 的回复:
反射是根据名字动态加载类,得到实例。这个情况是,已经有实例了,但要动态向下转型,只能考虑if-else或者工厂.
难道没有办法这样吗 ?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
rosewj
rosewj
等级:
可用分等级:
富农
总技术分:
443
总技术分排名:
39726
发表于:
2008-11-19 09:08:48
9
楼 得分:
5
帮顶
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ZhlIsJacky
从头再来
等级:
可用分等级:
长工
总技术分:
45
总技术分排名:
140531
发表于:
2008-11-19 10:10:56
10
楼 得分:
5
不会,只能帮忙顶起来
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
StarNCraft
权
等级:
可用分等级:
贫农
总技术分:
416
总技术分排名:
41767
发表于:
2008-11-19 12:31:34
11
楼 得分:
1
建议用工厂或if-else吧!
反射不推荐使用!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
hdhai9451
☆新人类☆
等级:
可用分等级:
掌柜
总技术分:
52056
总技术分排名:
161
发表于:
2008-11-19 12:55:17
12
楼 得分:
1
学习
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jianglihua1986
rr
等级:
可用分等级:
贫农
总技术分:
19
总技术分排名:
193713
发表于:
2008-11-19 12:57:18
13
楼 得分:
1
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
piaoye83
等级:
可用分等级:
中农
总技术分:
394
总技术分排名:
42907
发表于:
2008-11-19 13:25:05
14
楼 得分:
1
与个工厂类就是了
何必这么麻烦
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lichongkk
等级:
可用分等级:
贫农
总技术分:
25
总技术分排名:
166987
发表于:
2008-11-19 13:33:21
15
楼 得分:
0
引用 7 楼 lichongkk 的回复:
回4楼和2楼 我也考虑过用多态来做 (就是用if语句的 )
问题的关键是我的子类太多了. 这样做的话,一是效率肯定会有问题 .二是代码两太庞大了 .
所以才考虑这样做的
说过了
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
laorer
堕落佛
等级:
可用分等级:
掌柜
总技术分:
13224
总技术分排名:
1398
发表于:
2008-11-19 15:46:28
16
楼 得分:
0
能不能把你的想法说出来 ,或者说为什么要子类化?看看你的设计可不可以改一下思路,
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
maciie
Asoon
等级:
可用分等级:
贫农
总技术分:
5
总技术分排名:
322578
发表于:
2008-11-19 19:58:41
17
楼 得分:
5
Java code
if
(obj
instanceof
Son ){
return
(Son)obj; }
楼主是否想这样?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Longinc
晚风
等级:
可用分等级:
富农
总技术分:
1263
总技术分排名:
31151
发表于:
2008-11-19 22:20:43
18
楼 得分:
5
帮顶
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lichongkk
等级:
可用分等级:
贫农
总技术分:
25
总技术分排名:
166987
发表于:
2008-11-20 10:30:45
19
楼 得分:
0
我的设计思路
项目里要实现一个树由树来触发右边的显示床体
现在的问题是树上的节点种类N多如果都要用if语句来判断的话代码量太庞大了
所以想做一个动态加载的机制
大体想法是
在bean里加入两个变量
一个是 子类数据的类名(String)
另一个是 显示该子类的窗体的类名(String)
这样当我点击树节点触发事件时
先根据"显示该子类的窗体的类名(String)" 来生成窗体对象
然后将数据转成相应子类插入到窗体中
在将窗体set到右边的显示窗体中.
over
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lichongkk
等级:
可用分等级:
贫农
总技术分:
25
总技术分排名:
166987
发表于:
2008-11-20 10:36:46
20
楼 得分:
0
其实这个没必要,非的用强转来做.想了一下用泛形也可以实现.
只是想知道这样做是否可行
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
berlou
等级:
可用分等级:
中农
总技术分:
200
总技术分排名:
71632
发表于:
2008-11-20 11:13:52
21
楼 得分:
6
看不出这么设计的好处。
多态不代表if else
你既然抽象到父类的层次, 为什么还要向下转型回来?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lichongkk
等级:
可用分等级:
贫农
总技术分:
25
总技术分排名:
166987
发表于:
2008-11-20 12:45:55
22
楼 得分:
0
引用 20 楼 lichongkk 的回复:
其实这个没必要,非的用强转来做.想了一下用泛形也可以实现.
只是想知道这样做是否可行
我要用到子类的变量
当我调用Bean 的getData方法时 我想通过判断 class_name的值来 强制转换成相应的子类
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结帖去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友