Java重要技术(23)泛型之问号通配符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)泛型之问号通配符的主要内容,如果未能解决你的问题,请参考以下文章