黑马程序员技术交流社区

标题: 探讨一下为什么静态方法不允许访问定义在类上的泛型 [打印本页]

作者: rover0321    时间: 2014-6-12 00:07
标题: 探讨一下为什么静态方法不允许访问定义在类上的泛型
如题,定义泛型类和泛型方法如下:
  1. class Demo<T>
  2. {
  3.     public static void funA(T t){} // 不允许
  4.    
  5.     public static <Q> void funB(Q q){} // 允许
  6. }
复制代码
听毕老师讲完泛型编程后对funA的定义错误很是疑惑。如果说由于泛型所表明的类型需要在实例化的时候才能确定,因此静态的方法无法访问变量t。那么为什么funB可以呢?Q的类型不也要在实例化的时候才能确定吗?该从哪个角度去理解呢?谢谢大家!


作者: woshihq    时间: 2014-6-12 00:22
应该从内存上理解,当你调用funB方法的时候,它调用参数Q q,而q是传进去的参数,不是类里面的成员变量,前面<Q>,只是一种写法,没什么意义,只是声明Q是不知道是什么类型而已




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