请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

当T data是String类型时调用哪个构造方法,老师说的有点模糊吧?

https://img1.sycdn.imooc.com//szimg/5addc234000107cf19051012.jpg

public static <T> ServerResponse<T> createSuccess(T data){
   return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),data);
}

当data 是String 类型时,new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),data)这个构造器为什么没有调用ServerResponse(int status, String msg)构造方法,而是调用ServerResponse(int status, T data)这个?

正在回答

3回答

Geely 2018-04-29 22:31:10

 你好,同学,是这样的,首先这里是一个T,T代表任意类型,优先级肯定是这里高,所以为了区分来看,我们新增了msg的这个方法。如果要理清这里的原因,就要看这个类编译出来的字节码啦,字节码的看法可以看看jvm虚拟机实战里面,这里也不是一句两句都说清楚。。囧。


0 回复 有任何疑惑可以回复我~
  • 下面polo说“,因为优先级问题,当传进String数据时,java会自动优先调用String的构造方法”,老师说“T代表任意类型,优先级肯定是这里高”,所以是哪个优先级高呢
    回复 有任何疑惑可以回复我~ 2019-05-31 07:01:04
Jealous_Guy 2019-08-28 23:15:14

我觉得也没讲清楚

0 回复 有任何疑惑可以回复我~
polo哦 2018-04-23 21:44:50

额。。老师为了区分已经有一个SuccessMessage的区分了,专门存放string类型的数据,

https://img1.sycdn.imooc.com//szimg/5adde3ed000126e707330143.jpg

为什么会调用    private ServerResponse(Integer status, String msg) 而不是T data的构造方法呢,因为优先级问题,当传进String数据时,java会自动优先调用String的构造方法

0 回复 有任何疑惑可以回复我~
  • 请看清问题,没有说老师讲得有问题或者讲得不对,只是觉得这个地方讲得有点模糊,我理解不了,所以才提问的,只是希望听懂的人能给再解答一下。谢谢!
    回复 有任何疑惑可以回复我~ 2018-04-23 21:48:02
  • 请看最新回答能否解疑!
    回复 有任何疑惑可以回复我~ 2018-04-23 21:51:45
  • 你好,想问下这个问题同学明白了吗,我没想明白,希望同学能够赐教,谢谢
    回复 有任何疑惑可以回复我~ 2018-07-15 16:14:48
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信