java高级特性-反射、正则表达式

0 前言

       反射是指程序在运行时可以动态地获取和操作类、对象、方法、属性等信息的能力,它可以实现动态加载、代理、注解等技术。Java中提供了java.lang.reflect包来支持反射,其中包含了Class、Method、Field等类。
正则表达式是一种用于描述字符串模式的语法规则,它可以实现字符串的匹配、替换、分割等操作。Java中提供了java.util.regex包来支持正则表达式,其中包含了Pattern、Matcher等类。
本文将介绍Java高级特性中反射,正则表达式的基本概念、使用方法和示例代码,希望能够对读者有所帮助。

1 反射定义

背景:IDEA中获取某个类中的所有方法的提示就是利用反射的机制实现。
反射机制定义
1.动态获取对象信息(成员变量,成员方法,构造方法)
2.调用对象信息(成员变量,成员方法,构造方法)
反射编程核心思想
①获取Class类型的对象【字节码对象】
②通过字节码对象获取成员变量、成员方法、构造方法

2 反射用法

2.1 通过反射获取自定义类Class类型的对象

public static void main(String[] args) throws classNotFoundException{
	//第一种方式(企业中应用频率最高)
	Class aClass1 = Class.forName("com.zlt.test.Employee");
	System.out.println(aClass1);
	//第二种方式
	Class aClass2 = Employee.class;
	System.out.println(aClass2);
	//第三种方式
	Employee employee = new Employee();
	Class aClass3 = employee.getClass();
	System.out.println(aClass3);
}

2.2 通过反射获取内置类的Class类型的对象

public static void main(String[] args) throws classNotFoundException{
	//第一种方式
	Class aClass1 = Class.forName("java.lang.Thread");
	System.out.println(aClass1);
	//第二种方式
	Class aClass2 = Thread.class;
	System.out.println(aClass2);
	//第三种方式
	Thread thread = new Thread();
	Class aClass3 = thread.getClass();
	System.out.println(aClass3);
}

2.3 通过反射获取构造方法

public static void main(String[] args) throws classNotFoundException{
	//1.已获取字节码对象
	Class aClass = Class.forName("com.zlt.test.Employee");
	//2.通过字节码对象调用getConstructors()获取构造方法
	Constructor[] constructors = aClass.getConstructor(); 
	//3.遍历获取构造方法列表
	for(int i = 0;i < constructors.length;i++){
		System.out.println(constructors[i]);
	}
}

2.4 反射获取成员变量

public static void main(String[] args) throws ClassNotFoundException,NoSuchFieldException{
	//1.获取字节码对象
	Class aClass = Class.forName("com.zlt.test.Employee");
	//2.获取成员变量
	Field[] declaredFields = aClass.getDeclaredFields();
	//3.遍历输出成员变量
	for(int i = 0;i < declaredFields.length;i++){
		System.out.println(declaredFields[i]);
	}
	Field ageField = aClass.getDeclaredField("age");
	System.out.println("获取某个指定的成员变量"+ageField);
	System.out.println("获取某个指定的成员变量的名称"+ageField.getName());
	System.out.println("获取某个指定的成员变量的类型"+ageField.getType());
}

2.5 反射获取成员方法

public static void main(String[] args) throws ClassNotFoundException{
	//1.获取字节码对象
	Class aClass = Class.forName("com.zlt.test.Emplyee");
	//2.获取成员变量
	Method[] declaredMethods = aClass.getDeclaredMethods();
	//3.遍历循环成员方法列表
	for(int i = 0;i < declaredMethods.length;i++){
		System.out.println(declaredMethods[i]);
	}
}

3 正则表达式定义

定义
1.文本模式
2.字母,数字或者特殊字符组成。
应用场景
1.一般应用于注册等功能中的某些校验需求
2.检索,替换某些符合某个规则的文本
API文档
java.lang.String
java.util.regex.Pattern

4 正则表达式用法

1).
定义:匹配任意字符
2)replaceAll
定义:通过正则匹配字符串进行替换某字符
3)[]{x,y}[]{y}
定义:[]内为字符范围,x为字符出现最小次数,y为字符出现最大次数。
如[a-z]{3,7},出现3到7次小写字母
4)略
详细内容见:Java 正则表达式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值