当T data是String类型时调用哪个构造方法,老师说的有点模糊吧?
来源:6-2 登录功能开发
qq_谁动了我的奶酪_03546962
2018-04-23
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回答
-
你好,同学,是这样的,首先这里是一个T,T代表任意类型,优先级肯定是这里高,所以为了区分来看,我们新增了msg的这个方法。如果要理清这里的原因,就要看这个类编译出来的字节码啦,字节码的看法可以看看jvm虚拟机实战里面,这里也不是一句两句都说清楚。。囧。
012019-05-31 -
Jealous_Guy
2019-08-28
我觉得也没讲清楚
00 -
polo哦
2018-04-23
额。。老师为了区分已经有一个SuccessMessage的区分了,专门存放string类型的数据,
为什么会调用 private ServerResponse(Integer status, String msg) 而不是T data的构造方法呢,因为优先级问题,当传进String数据时,java会自动优先调用String的构造方法
032018-07-15
相似问题