为了账号安全,请及时绑定邮箱和手机立即绑定

泛型问题怎么解决

泛型问题怎么解决

qq_雨过之后_1 2017-07-25 21:30:36
为什么有的学生对象定义了<String>泛型,还可以传入123int类型,有的学生对象定义了<Integer>泛型还可以传入float、String类型,(代码中的show3()方法) ????????????求大神解答。package com.vdate.day18;/** * 泛型定意在方法上 *  * 泛型是个类,只能接受引用类型,不能传int这些基本数据类型,但是可以传他的包装类,integer * */public class demo3 { public static void main(String[] args) { Student2<String> s1 = new Student2<String>(); s1.show("hhhh");    //s1.show(123);// Student2<Integer> s2 = new Student2<Integer>(); // s2.show("hhhh"); s2.show(123);// s2.show2("dsda"); s2.show2(123F); Student2<Integer> s3 = new Student2<Integer>(); s2.show3("dsda"); s2.show3(123F); s2.show3(123); }}class Student2<E>{ int age; //泛型定义在方法上 public void show(E e) { System.out.println("show=" + e); } public void show2(Object o) { System.out.println("show=" + o); } //定义在方法上 public <A> void show3(A a) { System.out.println("show=" + a); } }
查看完整描述

1 回答

?
堇延未七

TA贡献36条经验 获得超19个赞

首先看show2方法,它的入参是一个Object的对象,万物都是Object的对象,所以不管传进来的是字符串还是整数,都会转化为Object对象输出;show3方法中入参是A类型,和泛型E是没有关系的,可以传入任意类型

查看完整回答
反对 回复 2017-07-26
  • qq_雨过之后_1
    qq_雨过之后_1
    show2方法中student中传入的是String类型怎么解释?? show3方法中<A>是和类中的泛型没关系,但是和show方法比较久不动了 。 为什么show方法中Student传入String类型后,s1.show(123);这个就错了,但是在show3中却可以??
  • 堇延未七
    堇延未七
    1.首先,String也是继承自Object 2.其次,s1.show(123);肯定是不对的。因为:s1是Student<String> 的对象,那么在调用它的show()方法时,入参必须是String类型,请仔细看它的入参类型; 但是在调用show3()方法时,传入的 类型是自定义的A类型,没有要求,所以是可以得。 实在不理解就debug看一下,各个情况下值得变化
  • 1 回答
  • 0 关注
  • 1294 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信