1.运行环境
JDK8+lntellij IDEA 2018.3
2.反射机制是什么
反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
3.反射机制能做什么
反射机制主要提供了以下功能:
-
在运行时判断任意一个对象所属的类;
-
在运行时构造任意一个类的对象;
-
在运行时判断任意一个类所具有的成员变量和方法;JDK8+lntellij IDEA 2018.3
-
在运行时调用任意一个对象的方法;
-
生成动态代理。
Ø获取一个对象的父类与实现的接口
public class Demo1 { public static void main(String[] args) { //1. Object obj=new String(); Class cla1=obj.getClass(); //2. Class cla2 = String.class; //3 try { Class cla3 = Class.forName("java.lang.String"); //4. ClassLoader cl = ClassLoader.getSystemClassLoader(); Class cla4 = cl.loadClass("java.util.ArrayList"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
Ø反射String类的所有构造方法
public class Demo2 { public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { // 反射String类的所有构造方法 Class cla=Student.class; System.out.println("所有构造方法"); // Constructor[] cons = clz.getConstructors(); Constructor[] cons=cla.getDeclaredConstructors(); for(Constructor con : cons){ // System.out.println("访问修饰权限:" + // Modifier.toString(con.getModifiers())); // System.out.println("方法名:" + con.getName()); // System.out.println("****************************"); System.out.println(Modifier.toString(con.getModifiers()) + " " + con.getName()); } //无参的构造方法 Student stu=new Student(); Constructor con=cla.getDeclaredConstructor(); Object obj = con.newInstance(); System.out.println(obj); //找带string,int类型参数的构造方法 Student s = new Student("daiyanye",12); con = cla.getDeclaredConstructor(String.class, int.class); obj = con.newInstance("daiyanye", 12); con = cla.getDeclaredConstructor(String.class); } }
Ø效果图
心得:
柏拉图曾经说过:“成功的唯一秘诀就是坚持带最后到一分钟”
好比长途赛跑,最费力的并不是开始的第一步,
而是迈向终点的最后一步。
毅力,就是恒心的体现。
一个没有毅力的人是不能成大器的。
“加油,努力,上进,做自己,我要赢”