泛型
2016-02-26 17:16
483 查看
1.类未声明泛型类型情况
内部的泛型方法,参数未统一,存取可能不一致,如果需要限制参数一致,需要使用泛型类;
2.类声明了泛型的类型情况
子类实际调用时,可以通过泛型父类的方法获取具体子类的类型:
内部的泛型方法,参数未统一,存取可能不一致,如果需要限制参数一致,需要使用泛型类;
/** * 泛型测试(类未声明泛型类型), * @author hjh * */ public class GenericTest { /** * @param args */ public static void main(String[] args) { } /** * 通配符应用 * @param collection */ public void printCollections(Collection<?> collection){ } /** * 泛型方法 * @param x T类型的参数 <T>修饰表示声明了T的类型,否则不知道 */ public <T> void add(T x){ } /** * * @param x * @param y * @return 返回T类型 */ public <T> T add(T x,T y){ return x; } }
2.类声明了泛型的类型情况
package com.hjh.test; import java.util.Collection; /** * 泛型测试(类声明泛型类型) * @author hjh * */ //public class GenericTest<T extends Number> {//限定必须是Number的子类 // //} public class GenericTest<T> { /** * @param args */ public static void main(String[] args) { } /** * 通配符应用 * @param collection */ public void printCollections(Collection<?> collection){ } /** * 泛型方法 * @param x T类型的参数 */ public void add(T x){ } /** * * @param x * @param y * @return 返回T类型 */ public T add(T x,T y){ return x; } }
子类实际调用时,可以通过泛型父类的方法获取具体子类的类型:
/** * 可以获取实际泛型类参数类型 * @return */ public Class getGenerClass(){ return (Class) ((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0]; }
/** * 获取泛型方法参数类型/返回类型 * @param methodName * @return */ public Class getMethodParameClass(String methodName){ try { Method method = GenericTest.class.getMethod(methodName, null);//参数为方法名和参数的类型 Type[] types = method.getGenericParameterTypes();//可能多个参数 Type returnType = method.getGenericReturnType();//返回值的类型 return (Class) types[0]; } catch (NoSuchMethodException | SecurityException e) { e.printStackTrace(); } return null; }
相关文章推荐
- poi导出Excel 不会产生垃圾文件的导出方式
- 4.11.3 深入理解Java:注解(Annotation)自定义注解入门
- 1023 Have Fun with Numbers
- jQuery提交form表单
- Hbase学习入门
- UVALive 4670(KMP)
- 使用svn时,类名冲突
- Swift:界面传值指南
- Android WebView中客户端与JavaScript的基本交互
- Java基础学习总结(49)——Excel导入导出工具类
- Java基础学习总结(49)——Excel导入导出工具类
- C语言指针剖析(1)---基本数据类型
- Java基础学习总结(49)——Excel导入导出工具类
- linux命令vi详解
- 谱聚类算法(Spectral Clustering)优化与扩展(转载)
- Unity动态对象优化
- 由Dapper QueryMultiple 返回数据的问题得出==》Dapper QueryMultiple并不会帮我们识别多个返回值的顺序
- 反转单向链表(JAVA)
- mysql的python API
- 不允许使用不完整的类型