反射:
- 操作运行期的class文件;class文件只有一个
- 获取classs的三中方式
@Test public void test() throws ClassNotFoundException { // 方式一 Class personClazz1 = Person.class; // 方式二 Person person = new Person(); Class personClazz2 = person.getClass(); // 方式三 Class personClazz3 = Class.forName("com.lily.reflect.bo.Person"); System.out.println(personClazz1==personClazz2); System.out.println(personClazz1==personClazz3); }
-
通过反射获取对象
@Test public void test2() throws Throwable{ // 1 获取class Class<Person> personClazz = Person.class; // 2 获取构造函数 无参/有参 Constructor<Person> constructor = personClazz.getConstructor(); // 3 创建对象 Person person = constructor.newInstance(); // 获取私有private属性 Field gender = personClazz.getDeclaredField("gender"); // 取消权限的访问控制 gender.setAccessible(true); gender.set(person,"1"); person.setName("秦艽"); System.out.println(person.getName()); }
泛型:
- 泛型本质是指类型参数化;
- 最开始的Object 任意类型;但是需要强转,是不安全的,容易报错;==>泛型
- 转载泛型详解
- 类型擦除:有一个父类<T>泛型擦掉--><Object>兼容老版本;子类<Integer>有具体类型时编译怎么处理-->桥联方法;强转(Integer)