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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李贺晓 中级黑马   /  2012-10-30 16:19  /  1507 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

泛型对其所有可能的类型参数,都具有相同的行为,从而可以把相同的类当成许多不同的类来处理。与此完全一致的是,类的静态变量和方法也在所有的实例间共享,所以在静态方法、静态初始化、静态变量的声明和初始化中不允许使用泛型
但是我看有的程序中定义泛型方法
static <T> void from ArrayToCollection(T[] a,Collection<T>c )
{
      for(T o:a)
         {
             c.add(o);
         }
}

这个方法为什么还可以定义成功,泛型不是不能定义静态方法吗?

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

2 个回复

倒序浏览
仔细看了下,明白是什么原因了
static <T> void from ArrayToCollection(T[] a,Collection<T>c )
{
      for(T o:a)
         {
             c.add(o);
         }
}
这个是静态泛型方法
在静态方法中不允许使用泛型是这个样子的
class Apple<T>
{
     publci static T info;
    public static T getInfo()
   {
        return this.info;
   }
}
这里的静态方法和静态变量不允许使用泛型修饰

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

回复 使用道具 举报
本帖最后由 都彭韬 于 2012-10-30 16:32 编辑

静态函数可以定义泛型啊!

但是静态函数的泛型要单独定义,就向你写的那样。 静态函数的泛型是不可以定义在类上面的。

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

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