反射与正则表达式学习总结

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个以上的小写字母;
{37}代表出现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(字节码对象){};  解决

 

posted @ 2023-06-23 16:56  meed  阅读(14)  评论(0)    收藏  举报