反射总结
一、反射
1、必须得到类的字节码
反射:public Person()
//获取类的字节码的方法
1、Class clazz = Class.forName("类的完整名称");
2、Class clazz = p.getClass();
3、Class clazz = Person.class;
//得到构造方法,创建对象
Constructor c=clazz.getConstructor(null);
c.newInstance(null);
2、反射:public Person(String name)
1、获取字节码
Class clazz = Class.forName("类的完整名字");
//得到字构造方法,创建对象
Constructor c=clazz.getConstructor(String.class);
c.newInstance("xiaomumu");
3、反射:public Person(String name,int age)
1、获取字节码
Class clazz = Class.forName("类的完整名称");
2、得到构造方法,创建对象
Constructor c=clazz.getConstructor(String.class,int.class);
c.newInstance("xiaomumu",20);
4、反射:private Person(int age)
1、获取字节码
Class Clazz = Class.forName("类的完整名称");
2、得到构造方法,创建对象
由于私有的方法,不能有外部的变脸调用。
constructor c = Clazz.getDeclaredConstructor(int.class);//读取私有的构造方法
c.setAccessible(true);//暴力反射
Person p = (Person)c.newInstance(40);
system.out.println(p.name);
5、反射:得到了类中的所有构造方法的长度
1、获取字节码
Class clazz = Class.forName("类的完整名称");
2、得到构造方法,创建对象
constructor[] c = clazz.getDeclaredConstructors();
system.out.println(c.length);