自从Java 5引入泛型之后,Java与C++对于泛型不同的实现的优劣便一直是饭后的谈资。在我之前的很多training中,当讲到Java泛型时总是会和C++的实现比较,一般得出的结论是 Java使用类型擦除(type erasing),泛型信息只在编译时供javac作类型检查用,在编译后便被javac擦除,因此无法被反射 C++使用代码模板实现泛型,即在预处理时会生成类似「list_int」,「list_char」等的泛型类,虽然解决Java的运行时伪泛型的问题,但是会导致编译后的代码呈线性增长 于是在一般情况下,Java的类型擦除实现较优 这三条已经比绝大多数的Java培训讲师讲得深刻了。但是如果下面有人问「在什么情况下C++的实现方式较优」时,除了无法被反射,我很难现抓一个有说服力的例子。今天,Spring的RestTemplate终于给了我这个例子 我遇到的问题如下(阅读需要有一些Spring MVC、REST基础) 有一个返回类型为List的MVC方法: @RequestMapping(value = "…", method = RequestMethod.GET) @ResponseBody public List<DomainClass> doSomethingREST() { List<DomainClass> domainObjs = … ; return domainObjs; } @RequestMapping(value = “…”, method = RequestMethod.GET) @ResponseBody public List<DomainClass> doSomethingREST() { List<DomainClass> domainObjs = … ; return domainObjs; } 在运行时,Spring MVC会将List转换成JSON字符串并返回至客户端。但是如果我在另一个service中使用RestTemplate直接调用该REST接口,问题便来了: List<DomainClass> read more
烫手的
- 生活,就是一个期待跟着一个期待 - 被踩了 6,372 脚
- 悼念该悼念的,记住该记住的,知道该知道的 - 被踩了 1,569 脚
- 解决android 2.2下无法更新gmail、voice search、google search、street view - 被踩了 1,230 脚
- 关于 - 被踩了 1,113 脚
- 死于青春 - 被踩了 1,057 脚
近期评论
- CSDN这回一石激起千层浪了 | 拈花微笑 发表在《请教新浪》
- 牛肉丝 发表在《Sina,I服了U》
- 牛肉丝 发表在《一路走好》
- CSDN这回一石激起千层浪了 | 拈花微笑 发表在《猜想:互联网ID,“死号”判定与回收》
- CSDN这回一石激起千层浪了 | 拈花微笑 发表在《Sina,I服了U》
