1. 泛型
1.1 个人总结
1.1.1. 为什么需要
解决运行时类型转换的安全问题,即尽可能的将运行时的类型转换提前到编译时进行检查
1.1.2. 实现方式
类型擦除,即在编译时使用类型参数的上界(没有限定就是Object,有限定就是第一个限定类型)替换类型参数,生成原始类型的字节码文件
使用这种方式的原因:兼容,尤其是二进制兼容(这样以前编译的代码可以直接使用,无需修改编译或者做少量的修改再编译)
1.1.3. 工作方式
就是在编译时由编译器进行类型转换检查,并插入类型转换的字节码(具体的可以通过反编译字节码文件了解)
1.1.4. 原则
既然主要是为了解决安全问题,那么可能导致不安全的行为一般都是不允许的,安全的行为一般都是允许的,但是也有例外为了兼容Java允许泛型类型和对应的原始类型相互赋值,如下:
public void add(ArrayList list){
list.add(1.0);
}
ArrayList
add(al);
String str = al.get(0);
虽然上述代码可以编译通过,但是会导致运行时类型转换异常
1.1.5. Java中的一些基本原则
1.2 详解
1.2.1. 基础
01.【泛型概述】【泛型类】
02.【泛型方法】【泛型接口】【泛型限定的基本使用】
泛型深入--01【泛型术语基础知识】【泛型 编译器 字节码】
泛型深入--02【参数化类型的特点】
泛型深入--03【泛型知识补充】【类型推断】
泛型通配符
泛型通配符限定
1.2.2. 反射与泛型
利用反射操作泛型I【与反射+泛型相关的接口类型综述】【Type】【ParameterizedType】
利用反射操作泛型II【TypeVariable】【GenericArrayType】【WildcardType】【Type及其子接口的来历】
利用反射操作泛型III【解析关于泛型类型的细节信息的获取方法】【Method与泛型相关的方法】
利用反射操作泛型IV【通过反射Method解析泛型方法思路】【通过Method对四种Type子接口类型进行解剖】【使用递归对任意复合泛型类型进行彻底解剖】
利用反射操作泛型V【通过Constructor反射解析泛型构造方法】【通过Field反射解析泛型成员变量】
利用反射操作泛型VI【泛型类型变量的语义】【GenericDeclaration接口】【泛型接口TypeVariable】【通过Class反射解析泛型类】
2. 注解
01【注解的基本概念及分类】【Java元注解】
02【注解的基本知识】【Java内建注解】
03【自定义注解】【为注解添加属性】
04【利用反射操作注解对象】
3. 集合
4. IO & NIO
NIO系列教程
IO系列教程
深入分析 Java I/O 的工作机制
5. 反射
01【反射机制】【反射的应用场景】
02【Class类对象】【Class对象的获取方式】
03【反射获取构造方法】
04【AccessibleObject类】【反射获取成员字段】
05【反射获取成员方法】
06【数组的数据类型】【数组数据类型的父类】
07【含有数组参数的成员方法的反射】【数组的反射】
6.序列化
JAVA序列化基础知识Serializable与Externalizable的区别
7. AOP && IoC(DI)
gradle_plugin_android_aspectjx
深入理解Android之AOP
IoC:将组件对象的创建和管理转移出去,由外部组件负责,实现方式一般有两种:依赖查找和依赖注入
依赖注入(DI):一般有以下几种实现方式
a、接口注入
b、构造器注入
c、set方法注入
d、注解注入
控制反转