变量是对内存地址的抽象;
函数(方法)是对代码片断的抽象;
类是对数据和行为的抽象;
而泛型则是对类型的抽象。
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泛型实现方式的比较和特点: