A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 钟伟杰 中级黑马   /  2013-4-24 16:06  /  1125 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 钟伟杰 于 2013-4-25 01:18 编辑

class Demo3<T>          //自定义泛型类Demo3,接收类型T
{
      public <T> void show(T t)   //接收类型T
       {
              System.out.println("show:"+t);
       }

       public <M> void print(M m)    //接收类型M
       {
              System.out.println("print:"+m);
       }
}

class Test
{
       public static void main(String[] args)
       {
              Demo3<String> d3 = new Demo3<String>();
              d3.show("java");
              d3.show(4);
                     
              d3.print("java");
              d3.print(5);
       }
}
运行结果:show:java
                  show:4
                  print:java
                  print:5

问题:主函数中创建自定义泛型类对象时已经明确了类型是String,那么show方法应该只能接收String类型的,
          怎么d.show(4)的时候还能正常运行呢?         

1.jpg (4.17 KB, 下载次数: 14)

1.jpg

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

1 个回复

倒序浏览
根据你的问题,你这里的类虽然声明了范型,但你的方法又从新声明了一次。
所以调用按照方法的声明为准。如果你只是要求和类的声明一致,这里的方法声明你应该改成
: public  void show(T t)   //接收类型T

点评

好细心哦  发表于 2013-4-24 16:53

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马