Java基础-泛型
2012-08-07 08:56
309 查看
变量是对内存地址的抽象;
函数(方法)是对代码片断的抽象;
类是对数据和行为的抽象;
而泛型则是对类型的抽象。
1.简单泛型类的使用:public class GenericClass<T> {}
2.接口泛型的定义与使用:public interface GenericInterface<T>{}; public class GenericClass implements GenericInterface<AClass> {}
3.泛型方法的定义与使用:public <T> ReturnType methodName(T... args){}
4.类型擦除以及类型擦除带来的问题:Java泛型只是一个编译时概念,无法获取泛型相关运行时信息(Class.getTypeParameters())。因此无法使用new T(), t.getClass().newInstance(), t instanceof X, T[] arr = new T[]等方法。泛型信息在JVM中只是一些标签或标记并没有具体信息所以依赖类型具体内存数据结构的操作都无法正常运行。解决办法应该也比较明了:将Class对象作为参数注入进去再通过class生成具体的实例。
5.Java泛型实现的兼容性考虑:为什么使用类型擦除主要是为了兼容已有的庞大的Java类库。从JVM层次考虑,新的泛型必须兼容原有运行时结构。
6.C++、C#、Java泛型实现方式的比较和特点:
函数(方法)是对代码片断的抽象;
类是对数据和行为的抽象;
而泛型则是对类型的抽象。
1.简单泛型类的使用:public class GenericClass<T> {}
2.接口泛型的定义与使用:public interface GenericInterface<T>{}; public class GenericClass implements GenericInterface<AClass> {}
3.泛型方法的定义与使用:public <T> ReturnType methodName(T... args){}
4.类型擦除以及类型擦除带来的问题:Java泛型只是一个编译时概念,无法获取泛型相关运行时信息(Class.getTypeParameters())。因此无法使用new T(), t.getClass().newInstance(), t instanceof X, T[] arr = new T[]等方法。泛型信息在JVM中只是一些标签或标记并没有具体信息所以依赖类型具体内存数据结构的操作都无法正常运行。解决办法应该也比较明了:将Class对象作为参数注入进去再通过class生成具体的实例。
5.Java泛型实现的兼容性考虑:为什么使用类型擦除主要是为了兼容已有的庞大的Java类库。从JVM层次考虑,新的泛型必须兼容原有运行时结构。
6.C++、C#、Java泛型实现方式的比较和特点:
相关文章推荐
- Java基础—泛型
- java基础-泛型详解(2):高级进阶
- java基础笔记(三--泛型)
- java基础——泛型解析
- java-基础入门-泛型数组列表-解决运行时动态更改数组的问题
- 23-java基础加强(反射、泛型、注解、动态代理)
- Java 泛型(一) 泛型使用基础
- JAVA基础--JAVA 集合框架(泛型、file类)16
- java基础——集合(Collection、Map)、泛型、System类
- Java基础15:treeset;排序方法-比较器;泛型;
- 【Java基础】泛型方法
- java语言基础(69)——集合框架(泛型的多种应用场景、泛型类、泛型方法、泛型接口)
- java语言基础(70)——集合框架(泛型高级之通配符)
- 黑马程序员——java基础-泛型和集合框架工具类
- java基础巩固之泛型(上)
- 黑马程序员——Java基础知识——泛型、枚举
- java基础-generics 泛型
- Java基础之泛型
- java基础-泛型
- java基础理解(泛型)