关于类型原型的思考(请不要在一个Map或List放入多种数据类型)

 今晚,夏雨天问了我一个关于dwr的问题,问题是这样的:“怎么把一个js中的list传到后台做为Java方法的参数”
其实Js中是没有list的,只有数组,于是你可以
var  list  =  [ " aaa " " bbb " " ccc " " ddd " ];

但关键是怎么用它做参数类?很多人会认为直接在后台

public   void  processMap(List data) 
     System.out.println(data.size()); 
}

但这是行不同的。不信,你试试就知道了。

我看了一下dwr的dtd,突然发现这样一个东西

< signatures >  
    
<![CDATA[  
    import java.util.List; 
    import com.livahu.TestDwr; 
    TestDwr.processMap(List<String>); 
    
]]>  
</ signatures >

(把上面这个加入到dwr.xml中的</allow>后面)
其实,对于js中的数组,dwr是不会自动封装好成java的List的,它要你指明是什么类型。
你甚至可以指名List<SomeJavaBean>
神奇吧!dwr还是很人性化的,你想想,只要有业务的需要,dwr想做好,它就会有相应的实现。神奇吧!dwr还是很人性化的,你想想,只要有业务的需要,dwr想做好,它就会有相应的实现。

但一个问题来了,夏雨天似乎是想要一个Map,当然Map<string, string>就和他的一些业务逻辑参数一样了,但他现在有一个businessId是String类型的,但还想有一个List类型的在这个Map里,我想了一阵子也没有法子。

突然意识到自己有多么的错误,我想James Gosling该骂骂我了。我曾对泛型还是做过一些研究(在JDK5.0)的规范刚出来的时候。在一个Map或List里放多种类型的数据这本身就与泛型的引入是格格不入的,是不正确的做事方式。所以我觉得这个问题就不是问题了,我想dwr这个小技巧还是有必要和大家共享,只是不要象我一样糊涂的想把几个不同类型的数据放在一个Map里面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值