A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xinzhang 中级黑马   /  2016-4-7 10:14  /  575 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

正则表达式
|---用一些符号来操作字符串,书写方便,阅读星太差(里面的符号啥的,基本的几个认得就可以)
|---功能:1,匹配:使用matchs方法(具体方法代码自己看)
    2,切割:split
    3,获取功能:find
    4,替换功能:replaceAll
8,反射:(所有内容都会被问)
|---定义:就是把java类中的各种成分映射成相应的java类,说白了就是获得一个类里面的成员
|---获取字节码的方法:1,类名.class(System.class) 2,对象.getClass()  3,Class.forName("类名 比如java.util.Data")
|---反射是为了实现(代码自己看):1,在运行时判断任意一个对象所属的类。2,在运行时构造任意一个类的对象。
    3,在运行时判断任意一个类所具有的成员变量和方法。4,在运行时调用任意一个对象的方法
|---反射与内省区别?
反射可以操作各种不同的java类,那么内省只是通过反射来操作JavaBean的。JavaBean类里面操作的都是成员变量,都是通过setXXX和getXXX方法
来获取成员变量,这样的类用内省来操作会更简单。
|---反射及暴力反射  ,获得私有方法代码(这里用到反射)
暴力反射:类里面的变量私有了,通过普通的getField反射方法无法获得,只能通过getDeclaredField()获得
代码:package day_7_15;
import java.lang.reflect.Field;
class ReflectPoint{
private int x ,y;
ReflectPoint(int x ,int y){
  this.x=x;
  this.y=y;
}
}
public class ViolenceReflectDemo {
public static void main(String[] args) throws Exception, Exception{
  ReflectPoint point = new ReflectPoint(3,5);
  //field类代表某个类中的成员变量,这里是私有变量只能通过暴力反射的方法获得,getDeclaredField()方法
  Field field = point.getClass().getDeclaredField("y");//得到了方法看不见方法,需要判断
  //通过方法看见了,但是拿不到
  field.setAccessible(true);
  //y这个还有变量y的变量类对象来获取对象里的y  ,拿到了变量
  System.out.println(field.get(point));
}
}

2 个回复

倒序浏览
反射中常用的获取字节码文件方式是Class.forName();这样配合配置文件能够更灵活,也提升了代码的扩展性。
反射还能越过泛型检查,是否是增加了不安全性,希望大神告知下
回复 使用道具 举报
小白想学javaEE 发表于 2016-4-7 11:52
反射中常用的获取字节码文件方式是Class.forName();这样配合配置文件能够更灵活,也提升了代码的扩展性 ...

反射即强行获取,不建议使用,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马