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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 HM谢文辉 于 2013-3-26 19:00 编辑

为什么静态方法、静态初始化或者静态变量的声明和初始化中不允许使用类型形参?错误代码:
  1. public class R<T>
  2.         {
  3.                 static T info;
  4.                 public void foo(T msg){}
  5.                 public static void bar(T msg){}
  6.         }
复制代码
instanceof运算符后不能使用泛型类?错误代码:
  1. List<String> list = new ArrayList<String>();
  2. if(list instanceof List<String>){}
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

2 个回复

倒序浏览
1.我看了一下eclipse给提示的信息,错误是:无法构造一个静态的变量info通过一个非静态的参考T。
2.  第二个应该是:  List<String> list = new ArrayList<String>();
                            if(list instanceof List<?>){};
我觉得应该是泛型在编译成为字节码后,字节码中是没有泛型的,所以静态变量伴随着字节码同时加载,而静态变量需要使用到这个泛型事实上是没有被给予的。所以报了错误,第二个我想也能用这个解释。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

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