首页 > 代码库 > Java重要技术(23)泛型之问号通配符
Java重要技术(23)泛型之问号通配符
1.1. 问号通配符
在类型参数中使用问号通配符,可以有三种不同的用法:
(1)Generic<?> 表示类型参数为任意对象类型。
(2)Generic<? extends B>表示类型参数为B或者B的派生类。
(3)Generic<? super B>表示类型参数为B或者B的父类。
static class A {} static class B extends A{} static class C extends B{} static class Generic<T> { } static class Holder{ //Generic<?>可以接受类型参数不同的各种参数化类型。 public void work( Generic<?> obj ){ } //? extends B表示类型参数可以是B,或者B的派生类。 public void workForBC( Generic<? extends B> obj){ } //? super B表示类型参数可以是B,或者B的父类。 public void workForAB( Generic<? super B> obj){ } } public static void main(String[] args) { Holder holder = new Holder(); //work(Generic<A> obj); holder.work(new Generic<A>()); //work(Generic<B> obj); holder.work(new Generic<B>()); //work(Generic<C> obj); holder.work(new Generic<C>()); holder.workForBC(new Generic<B>()); holder.workForBC(new Generic<C>()); //错误,A是B的父类。 //holder.workForBC(new Generic<A>()); holder.workForAB(new Generic<A>()); holder.workForAB(new Generic<B>()); //错误,C是B的派生类。 //holder.workForAB(new Generic<C>()); } }
Java重要技术(23)泛型之问号通配符
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。