1.反射的定义
(1)动态获取对象信息 (2)调用对象的信息(成员变量,成员方法,构造方法)
2.反射的核心编程思想以及各自的常用方法
步骤1:获取class类型的对象【字节码对象】
(1)Class aclass = Class.forName("");
(2)Class employeeClass=Employee.class;
(3)Employee employee = new Employee();
Class aClass=employee.getClass(); 步骤2:通过字节码对象获取 成员变量、方法和构造方法
(1)获取、遍历构造方法:
Class aClass=Class.forName("");
Constructor[] constructors=aClass.getConstructors();
for(Constructor con:constructors){
System.out.println(con);
}
(2)获取成员变量:
Class aClass=Class.forName("");
Field[] df=aClass.getDeclaredFields();
for(int i=0;i<df.length;i++){
System.out.println(df[i]);
}
(3)获取成员方法:
Method[] dm=aClass.getDeclaredMethods();
for(int i=0;i<dm.length;i++){
System.out.println(dm[i]);
}
3.
通过Class类的newInstance()方法创建对象,该方法要求该Class对应类有无参构造方法。
执行newInstance()方法实际上就是使用对应类的无参构造方法来创建该类的实例,其代码
的作用等价于new关键字创建实例。 Class c = Class.forName("Super"); //通过Class类的newInstance()方法创建对象 Super sup=(Super)c.newInstance(); System.out.println(sup.supPublic()); 如果Super类没有构造方法,运行程序会抛出一个InstantiationException实例化异常。
4.正则定义
(1)一种文本模式 (2)包含字母数字和特殊字符
5.描述下正则表达式:"0\?\\d{0,3}-?[1-9]\\d{7,9}"的含义
了解 [] 和 {} 的用法 核心要点:[a-z]{3}代表3个a到z的字母;{3,}3个或3个以上的小写字母; {3,7}代表出现3次或7次以内的小写字母 核心要点:[a-z]{3}等价于[a-z][a-z][a-z] X?代表一次或一次也没有
6.正则预定义字符类
. 任何字符(应用于校验要求)
\d 数字[0-9] \D 非数字[^0-9] \s 空白字符 \S 非空白字符 \w 单词字符 \W 非单词字符
7.非集群状态下,多线程出现并发问题,利用
同步锁机制synchronized(字节码对象){}; 解决
标签:总结,反射,构造方法,aClass,正则表达式,字符,println,Super,Class From: https://www.cnblogs.com/meed12581/p/17499256.html