范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

java之反射(2)属性field

  #头条创作挑战赛#
  通过反射可以得到字节码文件中的信息,比如字节码中的属性、方法、构造器等,是与类对应的。
  今天学习属性field的一些api。设置一个User类,内容如下:public class User {     public int num;     private double hight;     protected String cname;     static boolean sex;     private static int age;  }一、反射属性
  先获取字节码文件:Class cUser = Class.forName("org.example.dao.User");
  getFields获取公开的属性,即带有public的 Field[] fields = cUser.getFields();         for (Field f : fields) {             System.out.println(f);         }  输出:public int org.example.dao.User.num
  getDeclaredFields()获取所有的属性,无论是私有的还是公开的还是受保护的。返回的是一个field的数组。     Field[] declaredFields = cUser.getDeclaredFields();         for (Field item : declaredFields) {             System.out.println("获取属性全名:" + item);         }
  输出结果:获取属性全名:public int org.example.dao.User.num
  获取属性全名:private double org.example.dao.User.hight
  获取属性全名:protected java.lang.String org.example.dao.User.cname
  获取属性全名:static boolean org.example.dao.User.sex
  获取属性全名:private static int org.example.dao.User.age
  获取属性全名:float org.example.dao.User.kg
  如果你不想输出这么长的名字,可以用getName()获取短名。    Field[] declaredFields = cUser.getDeclaredFields();         for (Field item : declaredFields) {             System.out.println("获取属性简名:" + item.getName());         }
  输出结果:获取属性简名:num
  获取属性简名:hight
  获取属性简名:cname
  获取属性简名:sex
  获取属性简名:age
  获取属性简名:kg
  获取类型名   Field[] declaredFields = cUser.getDeclaredFields();         for (Field item : declaredFields) {             System.out.println("获取属性类型:" + item.getType());         }
  输出结果:获取属性类型:int
  获取属性类型:double
  获取属性类型:class java.lang.String
  获取属性类型:boolean
  获取属性类型:int
  获取属性类型:float
  获取属性修饰符       Field[] declaredFields = cUser.getDeclaredFields();         for (Field item : declaredFields) {             System.out.println("获取修饰符编号:" + item.getModifiers());         }
  输出结果:获取修饰符编号:1 获取修饰符编号:2 获取修饰符编号:4 获取修饰符编号:8 获取修饰符编号:10 获取修饰符编号:0
  输出的是一堆修饰符编号,什么都不加 是0 , public 是1 ,private 是 2 ,protected 是 4,static 是 8 ,final 是 16; 可以用Modifier.toString()进行转换。  Field[] declaredFields = cUser.getDeclaredFields();         for (Field item : declaredFields) {                      System.out.println("获取修饰符名字:" + Modifier.toString(item.getModifiers()));         }
  输出结果:获取修饰符名字:public
  获取修饰符名字:private
  获取修饰符名字:protected
  获取修饰符名字:static
  获取修饰符名字:private static
  获取修饰符名字:
  二、类属性的获取:Class cUser = Class.forName("org.example.dao.User"); System.out.println("获取字节码文件全名:" + cUser.getName()); System.out.println("获取字节码文件简单名:" + cUser.getSimpleName()); System.out.println("获取字节码文件修饰符:" + Modifier.toString(cUser.getModifiers()));
  结果:获取字节码文件全名:org.example.dao.User
  获取字节码文件简单名:User
  获取字节码文件修饰符:public
  解析:
  getName():是获取类的全限定名
  getSimpleName():获取类的简单名字
  三、以实例对象的方式设置属性值
  用newInstance创建实例对象,public class Client {     public static void main(String[] args) throws Exception {         Class cUser = Class.forName("org.example.dao.User"); //        User obj =(User) cUser.newInstance();         Object obj = cUser.newInstance();     } }
  用getDeclaredField获取单个的属性,这里不是getDeclaredFields哈,少了个s。public class Client {     public static void main(String[] args) throws Exception {         Class cUser = Class.forName("org.example.dao.User"); //        User obj =(User) cUser.newInstance();         Object obj = cUser.newInstance();         Field hight = cUser.getDeclaredField("hight");          } }
  获取到属性后,给hight赋值,用hight.set(obj, 178);
  hight:是要赋值的属性。
  set:设置
  obj:是给那个对象赋值
  178:要设的属性值public class Client {     public static void main(String[] args) throws Exception {         Class cUser = Class.forName("org.example.dao.User"); //        User obj =(User) cUser.newInstance();         Object obj = cUser.newInstance();         Field hight = cUser.getDeclaredField("hight");         hight.set(obj, 178);             } }
  此时运行一下,发现报错了:
  这是因为hight属性是一个私有的,不能设置属性值。
  怎么办呢?可以用setAccessible(true);进行强制赋值。public class Client {     public static void main(String[] args) throws Exception {         Class cUser = Class.forName("org.example.dao.User"); //        User obj =(User) cUser.newInstance();         Object obj = cUser.newInstance();         Field hight = cUser.getDeclaredField("hight");               hight.setAccessible(true);         hight.set(obj, 178);           } }
  强制赋值之后就可以了,那我们怎么查看赋值的结果呢?
  用hight.get(obj)查看结果:
  hight:是要查看的属性
  get:查询
  obj:查询那个对象的属性值。public class Client {     public static void main(String[] args) throws Exception {         Class cUser = Class.forName("org.example.dao.User"); //        User obj =(User) cUser.newInstance();         Object obj = cUser.newInstance();         Field hight = cUser.getDeclaredField("hight");         System.out.println(hight.getName());         hight.setAccessible(true);         hight.set(obj, 178);         System.out.println(hight.get(obj));     } }

85岁马玉琴立遗嘱,李玉成得全部财产,不给儿孙分钱理由被赞在东北有一对夫妻深受当地人关注,他们就是有着32岁年龄差的马玉琴和李玉成,按照辈分来算,马玉琴还是李玉成的舅妈,所以俩人的结合从一开始就受到周围人的阻挠,当时没有一个人支持马玉琴和唐山施暴者的女儿遭遇网暴,网友不同情,善有善报恶有恶报唐山打人案犯施暴者令人发指的行为激怒了全民,这个事件已经轰动了全国,引起了全网的高度关注,可以说每一个看过视频的网友都很气愤,大家最希望的就是让犯罪分子得到法律的最严厉的制裁,严惩实锤了,俄乌真相浮出水面,泽连斯基要和谈,美国一句话继续冲日前,俄罗斯国防部长绍伊古表示,俄罗斯军队已经控制了顿涅茨克和卢甘斯克大部分地区。在东欧局势进入第4个月的阶段,无论是前线战场还是在国际上,都能很明显地看出,俄罗斯逐渐取得了整个局米体尽管纽卡报价更高,但博特曼希望成为米兰的一员直播吧6月15日讯据米兰体育报报道,尽管纽卡报价更高,但博特曼希望成为米兰的一员。拿到意甲冠军之后,米兰这家有着光辉历史的俱乐部让自己变得更有吸引力。对于博特曼来说,米兰能够提供的陈继志哥哥愿用100万和解,被打女生母亲不原谅,不私了唐山打人事件已经过去了4天,9名施暴者目前已经归案,两名女生已经脱离了危险,转入了普通病房,至于什么时候能够出院,那就不得而知了。有网友曝光了受伤最厉害女生的验伤报告,女孩身上出现罗马教皇第三次世界大战正在发生据报,梵蒂冈教皇方济各为天主教会服务专访中发出警告的我曾突然想到,我们生活在一个局部正在经历第三次世界大战的世界中。今天,我相信第三次世界大战已经开始。我们要思考在一个世纪内全球经被殴打关后备箱十个小时的受害人出来发声,称至今没有找到陈继志6月10日,唐山市一烧烤店发生了男子因骚扰不成恼羞成怒殴打女生事件,女生被几名男子打到住院。至今还在治疗中。这件事引起了广大群众的愤怒,警方也是迅速对几名嫌疑人员实行抓捕,很快将九女室友都20岁了,还穿着五六岁的衣服,是家境不好吗?兄弟我怀疑你们玩的不是一个游戏,你们怎么拖着人家跑呢姑娘你这一身古装造型可以说,不知道多少人都为此心动了呢现在我才知道什么叫做狗仗人势,你等白狗的主人过来的兄弟你这弄得我本以为这是戴着合法面具的美国结构性种族主义鸣镝今年5月,美国纽约州布法罗市发生的一起大规模枪击案震惊了世界。一白人男子在当地一家超市枪杀多人,13名受害者中有11人为非洲裔。据报道,嫌疑人在作案前,曾在网上发布一份长达182018年,甘肃19岁女孩被男老师猥亵后举报,不满处理结果跳楼身亡2018年,甘肃庆阳市一名19岁女孩在朋友圈发布绝笔诗句后,到商场的8楼处坐了几小时。在民警和消防员积极援救的时候,楼下围观人群却发出一片不和谐的声音。最后女孩推开消防员的手从高空造化弄人?罗智强爱徒杨植斗,惊曝陈时中中招内幕文陈景圣工作室李不言台湾地区的疫情形势不容乐观,6月14日台湾地区新增新冠确诊病例66189例,新增死亡病例123例。相关数据显示,在过去的1个月内,台湾地区确诊人数高达230万人
王宝强都得叫大嫂!高叶狂飙后正式出圈,露胸装大牌珠宝霸气捧奖2023年的开播好剧狂飙收官后依然热度不减,除了大哥大嫂之外,在剧中饰演小弟的各位配角也都获得了不少人气红利。那今天主要讲一下大嫂高叶。她在2月25日登上了多个热搜榜,获得了soh狂飙到底带火了什么?影视杂谈狂飙的热映到底有多火呢?不仅让人们熟知了张颂文,高叶。那些小角色也被人们牢牢的记住,像麻子,疯驴子,黄瑶高叶即便高叶只有90多分钟的戏,但是却让人们看到了无可替代的大嫂陈书艾玛!足协内部机构居然有18个部门,再一次刷新了球迷们的认知!足协一定是近期网友们最关注热点最高的话题之一!被爆料出来的瓜一个比一个大,比娱乐圈都热闹。关于足协是怎么运营的,相信大多数网友并不清楚,广义上网友们认为主要就是管理男女国字号球队,南头古城,吾等大叔已然看不懂了今天走了一遭南头古城,仰慕已久,去了反而有点傻眼了。之前有人跟我说南头古城和北京的南锣鼓巷苏州的平江路很像,商业化氛围浓厚的老街。今天去了以后才发现,同样是商业化,南头古城走了另外时装周明星全露怯刘诗诗掉眼睫毛,刘涛似暴发户,肖战像包工头最近明星们都在国外了,不是在泰国度假,就是去柏林米兰走一趟,尤其是在米兰时装周上,网友秒变周迅脸,真的好多人啊!人虽说是多,但时尚味儿可并不浓,有几位明星是发着光闪耀着时装周,有几以我可能错了的心态过生活学习自我对话提升观照能力阅读一本书,就好比展开一趟旅程。你跨入未知的世界里,任由自己被所有的经验与印象包围。我可能错了的主轴是一个人踏上心灵旅程,亲历了自己内心从未被探索过的景致。它讲述了作者比约恩成为僧我劝你给孩子的卧室换条遮光能力满分的窗帘编辑谢谢最近,小编忙里慌张地在给家里的卧室更换遮光帘。Why?听说不是全暗的睡眠环境会影响孩子的视力和身高!夜晚关灯睡觉看似是常识,但越来越多的孩子在和父母分房睡的过程中,对小夜灯国元证券党委书记董事长总裁沈和付加强修炼内功打造核心综合服务能力全面注册制对各大券商的综合金融服务能力提出了更高要求。券商既要发现价值,从产业链中深入挖潜企业,主动服务国家战略又要创造价值,向市场源源不断输出优质企业。国元证券党委书记董事长总裁黄季焜重点抓饲料粮产能提升,深化农业科技创新体制机制改革21世纪经济报道记者李莎北京报道保障粮食安全事关国家安全和发展大局。今年中央一号文件仍将保障粮食安全作为全年三农工作的底线任务之一,将抓紧抓好粮食和重要农产品稳产保供作为首要任务。哪些护肤品可以有效延缓皮肤衰老?全面抗衰老包括很多方面,保湿防晒修复屏障抗炎刺激胶原蛋白再生等。护肤品这玩意用的对比用得贵更重要,特别对于抗衰老来说,因为没有试错的成本,所以最好就是选择含有真正有效的成分护肤品,38大促李佳琦直播间开设八个专场直播确保2小时内解决客诉2月27日,在38大促前夕,直播电商行业头部企业美腕(上海)网络科技有限公司发布旗下李佳琦直播间所有女生直播间所有女生的衣橱等直播矩阵的38大促最新安排和服务保障工作。今年38大促