为什么ServerResponse validResponse这句没有指定ServerResponse泛型类型呢?
来源:6-3 登出,注册,校验功能开发
wendy_z
2017-12-29
为什么不写成ServerResponse<String> validResponse呢?
public ServerResponse<String> register(User user){
ServerResponse validResponse = this.checkValid(user.getUsername(),Const.CURRENT_USER);
2回答
-
个人觉得:
泛型的作用是在编译期起类型检查作用,让编译器来帮我们码农检查类型转换异常,编译过后到class文件之后,泛型是会被擦除的,所以泛型在运行时是不起什么作用的。
项目很多地方用到泛型,起的作用也是让编译器帮我们检查类型转换而已,因为我们服务端还要跟客户端交互,所以有泛型的限定,可以帮助客户端更好的发现类型转换的问题
至于你提的为什么那个地方不用泛型,是因为类泛型限定之后,没有强制要求一定要使用的,所以下面几种写法都可以通过编译
Map map = new HashMap();
Map<String,Object> map1 = new HashMap();
Map map2 = new HashMap<String,Object>();
Map<String,Object> map3 = new HashMap<String,Object>();而且我们知道这个地方类型转换没有问题,我们也只在那个方法里面调用了那个对象,其它地方没有调用它,所以不用泛型影响不大(当然用泛型更好,看上去更规范)。所以加<String>也可以,不加也可以,但是如果泛型写成<User>,就会编译出错,因为类型转换出错了(右边this.checkValid返回的泛型是<String>)
122017-12-30 -
Geely
2017-12-30
你好,同学这个看业务场景,有的一些相对简单的就没有写。另外还有一个,如果方法返回值是不同的泛型的时候,也是可以不使用的。因为不能指定里面的泛型。
@慕田峪1359938 看看这个同学的回答,我看了下,非常赞
最近年底加班比较多,回复晚了,还请同学海涵呀~~
元旦快乐!!
【【看帖子看帖子看帖子】】,重要的说三遍哈
我给大家整理了这个,有问题可以来看看先找一下。 肯定有你想要的哈
部署环境的话 ,建议看下文章最后一小段哟~首先跟着课程阿里云部署那个章节过一遍,可以先不跟着操作,做到心里有数,环境部署都做了什么。
尽快进入咱们QQ群哟~~进群方法下面思维导图那个帖子有。非常详细
课程项目思维导图及线上环境、测试环境、部署linux和windows等解答
http://www.imooc.com/article/20193
00
相似问题