java反射机制:
反射机制是java中底层的一个功能,就是通过这个机制可以进行对象的灵活调用和处理
后期学习会用到反射相关的内容,但都是底层的理解,比如:文件的加载,Spring框架底层…..
java中提供一个api-Class类
1.
2.大class实例对应着加载到内存中的一个运行时类
3.object object=clazz.newInstance();//创建运行时类的对象
必须有空参构造器
权限修饰符要够,通常设置为public
4.
利用反射创建对象
package com.reflection;import org.junit.Test;import java.sql.SQLOutput;/*** @author 黄锐* @create 2020-12-18 10:10* 当前案例用于演示利用反射机制获取属性*/public class ReflectDemo {//新建对象的获取直接使用反射获取//单元测试@Testpublic void test1(){//已知明确的类型,获取Class对象Class<Student> clazz = Student.class;System.out.println(clazz);}@Testpublic void Test2(){//已知对象,获取class对象Student s = new Student();Class<? extends Student> clazz = s.getClass();System.out.println(clazz);}@Testpublic void test3() throws ClassNotFoundException {//完全限定名(包名.类名),获取class对象-比较常用-安全String s = "com.reflection.Student";//forname()返回这个地址所对应的类Class<?> clazz = Class.forName(s);System.out.println(clazz);}//测试结果:通过不同的反射获取的对象是不是同一个!@Testpublic void test4() throws ClassNotFoundException {Class<Student> clazz1 = Student.class;Student s1 = new Student();Class clazz2=s1.getClass();String ss= "com.reflection.Student";//forname()返回这个地址所对应的类Class<?> clazz3 = Class.forName(ss);System.out.println(clazz3);//比较System.out.println(clazz1 == clazz2);System.out.println(clazz1 == clazz3);System.out.println(clazz2 == clazz3);}}

