黑马程序员技术交流社区

标题: 自定义泛型问题。 [打印本页]

作者: 钟伟杰    时间: 2013-4-24 16:06
标题: 自定义泛型问题。
本帖最后由 钟伟杰 于 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, 下载次数: 10)

1.jpg

作者: JavaUtil    时间: 2013-4-24 16:23
根据你的问题,你这里的类虽然声明了范型,但你的方法又从新声明了一次。
所以调用按照方法的声明为准。如果你只是要求和类的声明一致,这里的方法声明你应该改成
: public  void show(T t)   //接收类型T




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2