Java源码解析(附录)(5) —— WildcardType
来源:互联网 发布:折弯机编程软件 编辑:程序博客网 时间:2024/06/02 01:18
WildcardType 泛型表达式
通配符表达式,泛型表达式,也可以说是,限定性的泛型,形如:? extends classA、?super classB。
源码
public interface WildcardType extends Type { //获得泛型表达式上界(上限) Type[] getUpperBounds(); //获得泛型表达式下界(下限) Type[] getLowerBounds();}
概述
WildcardType,通配符表达式,Type子接口,但是在Java中并没有WildcardType类型,详见:Type Java类型。
源码详解
1.getUpperBounds
获取泛型表达式上界,根据API的注释提示:现阶段通配符表达式仅仅接受一个上边界或者下边界,这个和定义类型变量时候可以指定多个上边界是不一样。但是API说了,为了保持扩展性,这里返回值类型写成了数组形式。实际上现在返回的数组的大小就是1,通配符?指定多个上边界或者下边界现在是会编译出错的(jdk1.7是这样的,至于7及以后就不知道了)。
2.getLowerBounds
获取泛型表达式下界。
public <T> void test(List<? extends classA > a){}Method method = Main.class.getMethod("test",List.class); Type[] upperBounds = null; Type[] lowerBounds = null; Type[] types = method.getGenericParameterTypes(); for(Type type : types){ Type[] actualTypeArgument = ((ParameterizedType)type).getActualTypeArguments(); for(Type t : actualTypeArgument){ WildcardType wildcardType = (WildcardType) t; lowerBounds = wildcardType.getLowerBounds(); upperBounds = wildcardType.getUpperBounds(); System.out.println("通配符表达式类型是:"+ wildcardType); if(upperBounds.length != 0){ System.out.println("表达式上边界:"+Arrays.asList(upperBounds)); } if(lowerBounds.length != 0){ System.out.println("表达式下边界:"+Arrays.asList(lowerBounds)); } } }//输出结果通配符表达式类型是:? extends com.fcc.test.classA表达式上边界:[class com.fcc.test.classA]
0 0
- Java源码解析(附录)(5) —— WildcardType
- Java源码解析(附录)(1) —— ParameterizedType
- Java源码解析(附录)(2) —— TypeVariable
- Java源码解析(附录)(4) —— GenericArrayType
- Java源码解析(附录)(3) —— GenericDeclaration
- Java Thread 源码 附录
- spring源码附录(5)解析子元素constructor-arg
- JSP学习——全面解析JDBC(8)附录
- spring源码附录(6)解析子元素property
- spring源码附录(8)import、beans标签的解析
- Java源码解析(5) —— Class(4)
- Java源码解析(1) —— Object
- Java技术——CopyOnWriteArrayList源码解析
- java集合—结合要点解析源码
- 《机器学习》——附录
- java.util.concurrent解析——FutureTask源码解析
- java.util.concurrent解析——ThreadPoolExecutor源码解析
- 『JSP学习——全面解析JDBC(8)附录』
- linux操作系统自动化安装之PXE
- Android第一个NDK示例
- Java常用排序算法
- iOS app性能优化的那些事
- 前端学习
- Java源码解析(附录)(5) —— WildcardType
- .net退出系统或退出登录
- LightOJ1119-Pimp My Ride-状态dp
- 系列解读Dropout
- kmeans聚类算法
- 51nod-1281 山峰和旗子
- 安卓中的坐标系
- qualcomm的camera马达驱动代码分析
- php实现文件的批量下载(Windows,Linux,Unix通用)