泛型:

 泛型,也就是参数化类型,在运行时由具体的类型来替换这个泛型参数。
它是在JDK5.0才加入的一个新功能,它主要带来的好处是安全简单,它
可以在编译时检查我们的类型安全,并且消除了类型的强制转换。
(注意:Java中的泛型是在编译后就会擦除掉,也就是说在编译时,编译器
可以检查的泛型参数类型是否合法,如果不合法,编译将无法通过。但是编译
通过通过,这种泛型参数类型就会擦出掉,变为原始的Object类型)
 
泛型主要涵盖以下几点:
1)泛型类
2)泛型接口
3)泛型方法
 
反射:JAVA反射机制是在运行状态中,对于任意一个类(Class对象),都能够知道这个类的所有属性和方法,也可以通过这个Class对象来创建类的实例;
 
JVM---类加载--->class文件----创建--->Class对象---->构建类的实例--->instance(实例) 
 
重点在运行时动态的操作Class对象
 
1.获取Class对象的三种方式
1)Class.forName("com.sqlserver.driver.SQLServerDriver");
2)  Xxxx.class
3)  对象.getClass()

2.通过Class对象创建实例

clazz.newInstance();//相当于new了一个对象出来(注意:newInstance方法要求相应的类必须提供一个无参的并且是public的构造方法)

3.Class类的常用API

1)getName() //返回的是一个完整类名
2)getSimpleName()//返回一个简单的类名,不包含包名
3) getPackage().getName() //获取类的包名
4)getSuperClass() //返回父类的Class对象
5)getField(String name) //返回指定名称的公共(public)属性
6)getDeclaredField(String name)//返回指定名称的属性(包括公共和私有的)
7)getFields() //访问所有使用public修饰的属性
8)getDeclaredFields() //返回所有的属性(包括公共和私有的)
9) getMethd(String name, Class paramType) // 根据方法名获取具体使用public修饰的某个方法对象,返回的是一个Method对象
10) getDeclaredMethd(String name, Class paramType) // 根据方法名获取具体的某个方法对象(可以是公共的和私有的),返回的是一个Method对象
11)getMethods() //返回当前类所有public修饰的方法,包含继承自Object的方法
12) getDeclaredMethds() // 返回当前类的所有方法,包括公共和私有的,但是不包括继承自Object的方法 

4.Field类常用API(代表Class中的属性)

1)setAccessible(true) //当访问私有成员时,调用此方法打开访问开关
2)getName()// 获取属性的名字
3)get(object) //获取属性的值,object参数为当前类的实例
4)set(object)//给属性赋值,同上

5.Method类常用API

1)getName() //获取方法的名字
2)invoke(Object instance, Object methodParam) //回调方法,invoke返回值就是具体方法的返回值
3)setAccessible(true) //打开访问开关