正篇
首先让我们看看它的定义,知晓何为泛型:
定义类时并不固定数据类型,等到创建对象或调用方法时再明确数据类型。
而且它有着以下性质:编译过程中,由编译器检查类型安全,自动隐性地对类的数据类型进行强制转换(Object -> 指定数据类型)。编译后生成的字节码文件(.class) 将不再含有泛型。
那么我们如何在代码中使用泛型呢?
如下代码:
// 定义时使用泛型 public class Person<T> { private T t; public void set(T t) { this.t = t; } public T get() { return t; } } // 调用时指定类型 class Test{ static void main(String[] args){ Person<Integer> teacher = new Person<>(); teacher.set(0); System.out.print(teacher.get()); } }
而代码中< T>的字母
通常可使用 A-Z 之间的任何一个字母,而我们常用的如下所示:
- T (type): 表示具体的一个 java 数据类型
- K V (key value): 分别代表 java 键值中的 Key Value,在键值对中如Map中常用
- E (element): 代表 java 集合框架元素
- ?:表示不确定的 java 类 由上例,我通俗的称泛型为我们需要适应不同环境的数据类型(泛用)。
总结
总结完泛型后我们回到开篇时说的,我和他聊了很多近况,发现研究生的确很好,还有大量的时间去整理知识,不过就是实践的机会较少,但可能是单例的原因,可我还是觉得也许还是工作中成长的更快,尽管我很羡慕能继续深造的他们。
之前总结的东西都过于疏浅,所以后面的更新应该会深入知识点,结合源码去分析,不能再这么草草结束文章。