黑马程序员技术交流社区
标题:
为什么静态方法等中不允许使用类型形参?还有instanceof
[打印本页]
作者:
HM谢文辉
时间:
2013-3-26 14:04
标题:
为什么静态方法等中不允许使用类型形参?还有instanceof
本帖最后由 HM谢文辉 于 2013-3-26 19:00 编辑
为什么静态方法、静态初始化或者静态变量的声明和初始化中不允许使用类型形参?错误代码:
public class R<T>
{
static T info;
public void foo(T msg){}
public static void bar(T msg){}
}
复制代码
instanceof运算符后不能使用泛型类?错误代码:
List<String> list = new ArrayList<String>();
if(list instanceof List<String>){}
复制代码
作者:
董延京
时间:
2013-3-26 18:29
1.我看了一下eclipse给提示的信息,错误是:无法构造一个静态的变量info通过一个非静态的参考T。
2. 第二个应该是: List<String> list = new ArrayList<String>();
if(list instanceof List<?>){};
我觉得应该是泛型在编译成为字节码后,字节码中是没有泛型的,所以静态变量伴随着字节码同时加载,而静态变量需要使用到这个泛型事实上是没有被给予的。所以报了错误,第二个我想也能用这个解释。
作者:
谢冬
时间:
2013-3-26 18:45
疯狂java。。。嘿嘿
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2