[color=Red]public class Test1 {
public static void main(String[] args) throws Throwable {
B<?> b=new B<String>();
b.input("123");//由于使用了通配符,所以该语句会报错,如果是无参方法或自行设定方法的参数类型将不会有影响。此时可以设置为null,可以通过编译。
b.output(b);//该语句可以接收任意的B类的泛型类型
}
}
class B<T>
{
public void input(T t)//如果该方法所在的类在创建对象时使用了通配符,该方法会报错,如果无参,或参数的类型没有设定为泛型则可以通过编译
{
}
public void output(B<?> b)//如果将B<?>b 换为B<Object>b 则是错误的
{
}
}
A<?>a=new A<T>();
不管此时T是什么类型,该语句没有警告,一般用作传递对象类型的参数,和类的类型返回值。
A a=new A<T>();
此时会有泛型安全警告
|