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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐巍 黑马帝   /  2012-3-22 01:52  /  1699 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请看下面代码:
class Demo<T>
{
        public void show(T t)
        {
                System.out.println("show:"+t);
        }
        public <Q> void print(Q q)
        {
                System.out.println("print:"+q);
        }
        public static void method(T t)//报错,提示静态方法method泛型T无法引用,为什么?
        {
                System.out.println("method:"+t);
        }
}
class GenericDemo4
{
        public static void main(String[] args)
        {
                Demo<String> d=new Demo<String>();
                d.show("wanglin");
                d.print("love");
                d.print(2);
                d.method("tangwei");
        }
}

6 个回复

倒序浏览
public static void method(T t)//报错,提示静态方法method泛型T无法引用,为什么?
        {
                System.out.println("method:"+t);
        }

应该为
  public static void<T> method(T t)   //加泛型
        {
                System.out.println("method:"+t);
        }
回复 使用道具 举报
本帖最后由 贠(yun)靖 于 2012-3-22 02:11 编辑

因为你的方法是静态方法   而类又不是静态方法   你看看你编译是不是说
  无法从静态方法引用非静态什么什么的     把static去掉就哦了

     或者 public static <W> void method(W w)        {
                System.out.println("method:"+t);
        }
  静态的方法泛型要从新定义   不能直接使用类的泛型  
回复 使用道具 举报
这个经试验吧,得出static后必须加上<T>才能运行通过,你可以试试。。。。。。
回复 使用道具 举报
田斌 发表于 2012-3-22 02:03
public static void method(T t)//报错,提示静态方法method泛型T无法引用,为什么?
        {
         ...

public static void<T> method(T t)   //加泛型

哥们,泛型加在返回类型前,写代码仔细点,要不然找错的时候你要崩溃的。
public static <W> void method(W w)
回复 使用道具 举报
public static void method(T t)//报错,提示静态方法method泛型T无法引用
  静态方法必须得重新加泛型!
因为静态方法在没有创建对象的时候就已经存在了,所以静态方法不可以访问类上定义的泛型。
如果静态方法操作数据类型不确定的话,可以将泛型定义在方法上。
public static <T> void method(T t)  就行了!
回复 使用道具 举报
public static void method(T t)//报错,提示静态方法method泛型T无法引用,为什么?

因为在实例化对象时,静态方法根本就还没有指定你的泛型,所以会报错。
解决办法:
定义成普通方法:public void method(T t)
定义一个静态泛型方法:public static <W> void method(W w)  //切记:在使用静态方法时,泛型定义在方法上,不能和类定义的泛型一致。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马