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

来源:6-2 登录功能开发

qq_谁动了我的奶酪_03546962

2018-04-23

http://img.mukewang.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

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


0
1
慕圣6489768
下面polo说“,因为优先级问题,当传进String数据时,java会自动优先调用String的构造方法”,老师说“T代表任意类型,优先级肯定是这里高”,所以是哪个优先级高呢
2019-05-31
共1条回复

Jealous_Guy

2019-08-28

我觉得也没讲清楚

0
0

polo哦

2018-04-23

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

//img.mukewang.com/szimg/5adde3ed000126e707330143.jpg

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

0
3
Rookie_ly
回复
qq_谁动了我的奶酪_03546962
你好,想问下这个问题同学明白了吗,我没想明白,希望同学能够赐教,谢谢
2018-07-15
共3条回复

从0开始 独立完成企业级Java电商网站服务端开发

前后端分离,数据库接口设计,架构设计,功能开发,上线运维

9476 学习 · 8804 问题

查看课程