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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘永川 中级黑马   /  2016-9-16 21:12  /  304 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

给出以下代码,请指出其中的问题,并说明原因
class Test<X extends Number, Y, Z> {
private X x;
private static Y y;
public X function(){
return x;
}
public void method() {
Z z = new Z();
}
}
        答案:编译错误
                private static Y y;错误,静态修饰的变量,在创建对象前存在了,此时,泛型类型还没有确定,所以不能使用泛型来表示。
                Z z = new Z();错误,泛型类型在使用前,类型是不确定的,不能用来创建对象。

               
                看答案 没有看懂  这两个错误的原因

1 个回复

倒序浏览
这是一个Test类,有三个泛型X,Y,Z,其中X extends Number.
X,Y,Z都是未确定的类型。
在这个Test类被使用的时候才会传入相应的类型。如int,boolean等
还没传入就不能确定X,Y,Z类型,就没法使用。

静态修饰的变量,随类的加载而加载,没有传入类型(确定类型)就要加载,不能确定加载什么类型,错误

Z z = new Z();  要创建对象,此时类Test还没传入类型,不能确定Z的类型,无法使用。

//说的有点啰嗦,大概就这个意思
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马