自定义泛型
来源:互联网 发布:网络媒介的优点 编辑:程序博客网 时间:2024/04/27 02:08
java的泛型借鉴于C++的模板函数,但没有C++模板函数功能强大,java的泛型基本上完全是在编译器中实现,适用于编译器执行类型检查和类型推断,然后生成普通的非泛型的字节码
实例:交换数组中的两个元素
private static <T> void swap(T[] a, int i, int j)
{
T tmp = a[i];
a[i] = a[j];
a[i] = tmp;
}
在上例中如果T[]是int[]则出错,因为只有引用类型才能作为泛型方法的实际参数
在定义泛型时可以使用extends限定符,并且可以用&来制定多个边界,如<T extends Serializable&cloneable> void method(){};
构造方法、静态方法、普通方法都可以使用泛型,不允许创建类型变量的数组
在泛型中可同时有多个类型变量,用逗号分隔
泛型类的应用:public class GenericDao<T>{};
类级别的泛型是根据引用该类名时指定的类型信息来参数化类型变量的
例如:GenericDao<String> dao = null;
new GenericDao<String>();
类级别泛型注意:
在对泛型进行参数化时,类型参数的实例必须是引用类型,不能是基本类型
当一个变量被声明为泛型时,只能被实例变量和方法调用(还有内嵌类型),而不能被静态变量和静态方法调用。静态成员是被所有参数化的类所共享的,所以静态成员不应该有类级别的类型参数。
利用反射获得泛型的实际参数类型
Method applyMethod = NewMain.class.getMethod("appliy", Vector.class);
Type[] type = applyMethod.getGenericParameterTypes();//获取泛型参数
ParameterizedType Par = (ParameterizedType) type[0];
System.out.println(Par.getRawType());//原始类型
System.out.println(Par.getActualTypeArguments()[0]);//实际类型参数可有多个,返回数组
public static void appliy(Vector<String> Vec){
}
- 自定义泛型方法
- 自定义泛型
- 自定义泛型
- 自定义泛型总结
- C#自定义泛型
- 自定义泛型
- 自定义泛型
- 自定义泛型
- C# 自定义泛型
- JAVA 自定义泛型
- 自定义泛型
- java自定义泛型
- 16.1自定义泛型
- 自定义泛型Java
- 自定义泛型
- 自定义泛型
- 自定义泛型
- 泛型,自定义泛型,foreach
- Fragments (Android官方文档中文版)
- Linux下解压、打包命令及其tar命令详解
- import com.adobe.images.JPGEncoder;
- filter典型应用2
- 场景下参数化的取值总结
- 自定义泛型
- MFC常用控件使用说明
- QT进行ini文件的读写
- 算法讨论(二)---求子数组的最大和
- zen cart - 国内IP访问zen cart官方网站被禁止
- DM9161布线指南
- Win32 API下的多线程编程
- Powershell regular expression.
- 生活随想