测试类:[java] view plain copy<span style=font-size:14px;>package fanshe.field; import java.lang.reflect.field; /* * 获取成员变量并调用: * * 1.批量的 * 1).field[] getfields():获取所有的公有字段 * 2).field[] getdeclaredfields():获取所有字段,包括:私有、受保护、默认、公有; * 2.获取单个的: * 1).public field getfield(string fieldname):获取某个公有的字段; * 2).public field getdeclaredfield(string fieldname):获取某个字段(可以是私有的) * * 设置字段的值: * field --> public void set(object obj,object value): * 参数说明: * 1.obj:要设置的字段所在的对象; * 2.value:要为字段设置的值; * */ public class fields { public static void main(string[] args) throws exception { //1.获取class对象 class stuclass = class.forname(fanshe.field.student); //2.获取字段 system.out.println(************获取所有公有的字段********************); field[] fieldarray = stuclass.getfields(); for(field f : fieldarray){ system.out.println(f); } system.out.println(************获取所有的字段(包括私有、受保护、默认的)********************); fieldarray = stuclass.getdeclaredfields(); for(field f : fieldarray){ system.out.println(f); } system.out.println(*************获取公有字段**并调用***********************************); field f = stuclass.getfield(name); system.out.println(f); //获取一个对象 object obj = stuclass.getconstructor().newinstance();//产生student对象--》student stu = new student(); //为字段设置值 f.set(obj, 刘德华);//为student对象中的name属性赋值--》stu.name = 刘德华 //验证 student stu = (student)obj; system.out.println(验证姓名: + stu.name); system.out.println(**************获取私有字段****并调用********************************); f = stuclass.getdeclaredfield(phonenum); system.out.println(f); f.setaccessible(true);//暴力反射,解除私有限定 f.set(obj, 188/8888/9999); system.out.println(验证电/话: + stu); } }</span><span style=font-size:18px;> </span>
后台输出:
[java] view plain copy************获取所有公有的字段******************** public java.lang.string fanshe.field.student.name ************获取所有的字段(包括私有、受保护、默认的)******************** public java.lang.string fanshe.field.student.name protected int fanshe.field.student.age char fanshe.field.student.sex private java.lang.string fanshe.field.student.phonenum *************获取公有字段**并调用*********************************** public java.lang.string fanshe.field.student.name 验证姓名:刘德华 **************获取私有字段****并调用******************************** private java.lang.string fanshe.field.student.phonenum 验证电/话:student [name=刘德华, age=0, sex=
由此可见调用字段时:需要传递两个参数:object obj = stuclass.getconstructor().newinstance();//产生student对象--》student stu = new student();
//为字段设置值
f.set(obj, 刘德华);//为student对象中的name属性赋值--》stu.name = 刘德华
第/一个参数:要传入设置的对象,第二个参数:要传入实参4、获取成员方法并调用student类:[java] view plain copy<span style=font-size:14px;>package fanshe.method; public class student { //**************成员方法***************// public void show1(string s){ system.out.println(调用了:公有的,string参数的show1(): s = + s); } protected void show2(){ system.out.println(调用了:受保护的,无参的show2()); } void show3(){ system.out.println(调用了:默认的,无参的show3()); } private string show4(int age){ system.out.println(调用了,私有的,并且有返回值的,int参数的show4(): age = + age); return abcd; } } </span>
测试类:[java] view plain copy<span style=font-size:14px;>package fanshe.method; import java.lang.reflect.method; /* * 获取成员方法并调用: * * 1.批量的: * public method[] getmethods():获取所有公有方法;(包含了父类的方法也包含object类) * public method[] getdeclaredmethods():获取所有的成员方法,包括私有的(不包括继承的) * 2.获取单个的: * public method getmethod(string name,class<?>... parametertypes): * 参数: * name : 方法名; * class ... : 形参的class类型对象 * public method getdeclaredmethod(string name,class<?>... parametertypes) * * 调用方法: * method --> public object invoke(object obj,object... args): * 参数说明: * obj : 要调用方法的对象; * args:调用方式时所传递的实参; ): */ public class methodclass { public static void main(string[] args) throws exception { //1.获取class对象 class stuclass = class.forname(fanshe.method.student); //2.获取所有公有方法 system.out.println(***************获取所有的”公有“方法*******************); stuclass.getmethods(); method[] methodarray = stuclass.getmethods(); for(method m : methodarray){ system.out.println(m); } system.out.println(***************获取所有的方法,包括私有的*******************); methodarray = stuclass.getdeclaredmethods(); for(method m : methodarray){ system.out.println(m); } system.out.println(***************获取公有的show1()方法*******************); method m = stuclass.getmethod(show1, string.class); system.out.println(m); //实例化一个student对象 object obj = stuclass.getconstructor().newinstance(); m.invoke(obj, 刘德华); system.out.println(***************获取私有的show4()方法******************); m = stuclass.getdeclaredmethod(show4, int.class); system.out.println(m); m.setaccessible(true);//解除私有限定 object result = m.invoke(obj, 20);//需要两个参数,一个是要调用的对象(获取有反射),一个是实参 system.out.println(返回值: + result); } } </span>
西安飞凡网络技术咨询有限公司
400 011 2010
供应梅州液面覆盖球
宁波/甘宝素/呲啶硫酮锌/洗发护发调理剂
太原超能销售培训班 欢迎您来电咨询
金山钯碳回收
供应美国3M防火泥凝固型CP25WB+
Java基础中篇
创兴联 不锈钢气瓶提车 定做304不锈钢气瓶推车可来图定做
油烟机清洗 锦江区家庭油烟机清洗 专业清洗油烟机公司
济南q326履带式喷砂机报价永兴机械厂质优价廉
豆制品机械 高档人造肉机 大豆蛋白挤出机 豆皮机设备
35KV欧式电缆分接箱DFP-35/630/
在成都办理了危险化学品经营许可证审批过程是
烟台液压缸 烟台高压重型液压缸 D25系列高压重型液压缸
供应苏州PE收缩膜
供应LM32019T.LM320192珊星电脑显示屏
迎泽区插花培训,自然派花艺培训,学插花大概多少钱
304不锈钢圆管外径51*1.1 不锈钢管
迪克森 高职员工餐厅 深圳订制厂家
嘉银 6KW 水式模温机
深圳五金工具、绝缘工具、DVE工具、工具箱、工具包