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

通配符 ? 一般在什么情况下使用呢????最好能举例,谢谢

1 个回复

倒序浏览
[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>();
此时会有泛型安全警告

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