文章标题

来源:互联网 发布:mst软件与sap2000 编辑:程序博客网 时间:2024/05/17 13:40

java反射机制:
what(是什么)
1 首先需要知道Class是做什么的?
需要先有一个类的完整路径引入之后才可以按照固定的格式产生实例
化对象,但是在Java中也允许通过一个实例化对象找到一个类的完整信息,那么这就是Class功能

反射就是允许通过实例化对象找到一个类的完整信息

why(为什么用反射)
获取类型的相关信息
动态调用方法
动态构造对象
从程序集中获得类型。
how(怎么做)
1 反射机制获取类有三种方式

//第一种方式:(最常用)  Classc1 = Class.forName("Person");  //第二种方式:  //java中每个类型都有class 属性.  Classc2 = Person.class;  //第三种方式:  //java语言中任何一个java对象都有getClass 方法  Person p= new Person();  Class c3 = p.getClass(); //c3是运行时类 (e的运行时类是Employee) 2 获取类以后创建对象(newInstance)Class c =Class.forName("Employee");  //创建此Class 对象所表示的类的一个新实例  Object o = c.newInstance(); //调用了Employee的无参数构造方法.  

3 获取属性:分为所有的属性和指定的属性
3.1 先获取所有的属性对象(getDeclaredFields())

//获取整个类              Class c = Class.forName("java.lang.Integer");                //获取所有的属性?              Field[] fs = c.getDeclaredFields();                     //定义可变长的字符串,用来存储属性              StringBuffer sb = new StringBuffer();              //通过追加的方法,将每个属性拼接到此字符串中              //最外边的public定义              sb.append(Modifier.toString(c.getModifiers()) + " class " + c.getSimpleName() +"{\n");              //里边的每一个属性              for(Field field:fs){                  sb.append("\t");//空格                  sb.append(Modifier.toString(field.getModifiers())+" ");//获得属性的修饰符,例如public,static等等                  sb.append(field.getType().getSimpleName() + " ");//属性的类型的名字                  sb.append(field.getName()+";\n");//属性的名字+回车              }              sb.append("}");              System.out.println(sb);  

注意:如果想通过Class类本身实例化其他类的对象,则可以使用newIstance()方法,
但是必须要保证被实例化的类中存在一个无参构造方法
当然也可以调用有残构造实例化对象,在这里不再赘述

3.2 获取特定的属性

  //获取类      Class c = Class.forName("User");      //获取id属性      Field idF = c.getDeclaredField("id");      //实例化这个类赋给o      Object o = c.newInstance();      //打破封装      idF.setAccessible(true); //使用反射机制可以打破封装性,导致了java对象的属性不安全。      //给o对象的id属性赋值"110"      idF.set(o, "110"); //set      //get      System.out.println(idF.get(o)); 

4 java反射机制的深入应用:
4.1 通过反射调用类中的方法
4.2 调用setter及getter方法
4.3 通过反射操作属性
4.4 通过反射操作数组

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 铁水中硅的含量高了怎么办 视频拍摄单人变双人是怎么办的 四季青进来的货比淘宝还贵怎么办 淘宝还没收货价格买贵了怎么办 在微信上赌博庄跑了怎么办 微信赌博输了10000多怎么办 欠了信用卡说来来家里调查怎么办 没用过的超市购物卡丢了怎么办 体验服抢号成功手机号填错了怎么办 起亚kx3一键启动钥匙没电怎么办 逆战下载的时候显示文件损坏怎么办 移动公司买手机送话费套路怎么办 开通京东白条身份信息被占用怎么办 丰巢快递柜把东西寄丢了怎么办? 圆通快递把我寄的东西弄丢了怎么办 快递把我寄出去的东西弄丢了怎么办 京东被盗刷都是到付怎么办 订机票时护照号错了怎么办 请问网上不小心点了扣话费了怎么办 不小心被中国移动扣了话费怎么办 京东买东西已经付款了说无货怎么办 不小心提交了两次中信信用卡怎么办 淘宝买东西扣了银行卡两次钱怎么办 拼多多同一个订单支付了两次怎么办 京东手机号服务密码忘记了怎么办 京东买的东西转手给别人保修怎么办 改了无线网密码还是上不去网怎么办 买的京东e卡丢了怎么办 已认证未抵扣的发票发生退货怎么办 办的消费卡不给退怎么办 银行卡密码忘了手机号也换了怎么办 公务卡在当当购物的刷卡单怎么办 杭州市网签提示住宅均价异常怎么办 吃鸡账号没有绑定手机就买了怎么办 微信绑定的银行卡密码错误怎么办 淘宝单张券已领取达上限怎么办 去办公室给领导送礼总有人怎么办 招行信用卡临时额度到期后怎么办 中银e令不想用了怎么办 中银e令密码忘了怎么办 银行卡预留手机号改了支付宝怎么办