Java - 反射机制 - 正则表达式

来源:互联网 发布:相片动画制作软件 编辑:程序博客网 时间:2024/04/29 21:07

反射机制:在程序运行状态下,动态获取信息,动态调用对象的功能。是对类的解剖

Class<T>类:对字节码文件(类)的描述。封装了类的所有信息。

public class ClassDemo {/* * 用反射机制模拟电脑运行  * 1.定义一个接口  * 3.使用接口  * 4.读取配置文件,实例化接口子类。         <pre name="code" class="html"> * 2....实现接口....
 */public static void main(String[] args) throws IOException, Exception {Computer c = new Computer();// 读取配置文件Properties pro = new Properties();FileReader fr = new FileReader("usb.properties");pro.load(fr);// 根据读取到的类名,实例化接口子类。for (int i = 0; i < pro.size(); i++) {// 获取类名String usbName = pro.getProperty("usb" + (i + 1));// 获取该类名所对应的字节码文件Class clazz = Class.forName(usbName);// 创建该类的一个实例,泛型不指定Object,强转。InterfaceUsb usb = (InterfaceUsb) clazz.newInstance();c.useUsb(usb);}}}

/* * 定义一个Usb接口。 */public interface InterfaceUsb {public void open();public void close();}

/* * 使用usb接口 */public class Computer {Computer() {System.out.println("运行电脑");}// 使用Usbpublic void useUsb(InterfaceUsb usb) {if (usb != null) {usb.open();usb.close();}}}

/* * 实现usb接口 */public class Mouse implements InterfaceUsb {public void open() {System.out.println("插入鼠标");}public void close() {System.out.println("拔出鼠标");}}


正则表达式(regex):用于操作字符串数据。匹配、替换、获取、查找、、、

Pattern类:正则表达式的编译表示形式。指定为字符串的正则表达式必须首先被编译为此类的实例。

                       --模式--将一个字符串转换成一个正则表达式--

Matcher类:匹配器、、根据 Pattern 执行匹配操作的引擎。 

                       --描述正则表达式如何操作字符串数据

、、正则表达式小案例、、、、

import java.util.TreeSet;public class RegexTest {public static void main(String[] args) {// 1.治疗口吃。将"我我..我我...来来..来...了.了了..了.了..了"转成"我来了"String str1 = "我我..我我...来来..来...了.了了..了.了..了";str1 = changeString(str1);System.out.println(str1);// 我来了// 2.对ip地址排序"127.0.0.1   189.3.5.4   8.8.8.8   255.36.21.8"String ip_str = "127.0.0.1   189.3.5.4   8.8.8.8   255.36.21.8";sortIp(ip_str);/**************** * 8.8.8.8 * 127.0.0.1 * 189.3.5.4 * 255.36.21.8 * ****************/// 3.校验邮箱String email = "123asd@q.q.com";boolean b = checkEmail(email);System.out.println(b);/* * 4.网页爬虫  * 使用URL统一资源定位符的 openStream()读取URL引用的资源 * 正则获取...  * 创建一个Pattern... * 获取Matcher...和要匹配的数据关联  * 保存匹配的数据 */}private static boolean checkEmail(String email) {return email.matches("[\\w]+@[\\w]+(\\.[\\w]+)+");}private static void sortIp(String ip_str) {// 先补0ip_str = ip_str.replaceAll("(\\d+)", "00$1");// 保留后三位ip_str = ip_str.replaceAll("0*(\\d{3})", "$1");// 再切割String[] ips = ip_str.split(" +");// 排序想到 TreeSet 集合TreeSet<String> ts = new TreeSet<String>();for (String ip : ips) {ts.add(ip);}for (String ip : ts) {ip = ip.replaceAll("0*(\\d+)", "$1");System.out.println(ip);}}/* * 治疗口吃 */private static String changeString(String str1) {// 删除..即替换成空str1 = str1.replaceAll("\\.+", "");// 删除重复,即将多个相同字替换成一个str1 = str1.replaceAll("(.)\\1*", "$1");return str1;}}













0 0