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

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));     } }

嘲笑奔驰EQC,是对油改电最基本的侮辱!让我说,奔驰EQC车主被特斯拉销售嘲讽这件事儿,没啥毛病。尊重他人消费行为是最基本的道德,作为一个销售不应该嘲笑消费者,除非忍不住,消费行为不分三六九等,但商品价值却分三六九等。奔美版iPhone14被破解京东推出社群团购小程序魅族新机有点骚人工智能模仿乔布斯接受采访近日,海外公司Play。ht运用人工智能podcast。ai制作了一期苹果已故创始人史蒂夫乔布斯接受演员JoeRogan采访的播客节目。在这期节目中,双方泸州老窖2022年前三季度业绩会有惊喜,国窖1573回款目标提前完成前几天,一则传闻导致白酒股下跌,但资本信心很快就得到了恢复,因为如今的白酒行业已经基本完成转型,主要以商务消费为主,而且消费刚性强,即使是在局部地区疫情多点反复的情况下,国窖157正视差距不逃避,中国仍落后的3项尖端技术,西方领先至少10年自中美贸易战后,我国在部分高端科研领域的发展受到限制,而终归到底是美国为首的西方国家的技术封锁。近20年来,随着中国经济腾飞,科技水平也迎来了大幅度跨越,不管是发展速度还是科研质量如何灭火金融危机2022年诺贝尔经济学奖文任泽平团队导读2022年诺贝尔经济学奖授予美国三位经济学家,分别为布鲁金斯学会经济学家本伯南克(BenBernanke)芝加哥大学教授道格拉斯戴蒙德(DouglasDiamond多地支持农民进城购房给予购房补贴享城区人口同等政策来源澎湃新闻记者计思敏释放农民消费潜力鼓励农民进城购房再次成为全国多地推动楼市发展的一大举措。据澎湃新闻不完全统计,今年以来,至少包括吉林省延吉吉林省吉林江苏省泰州湖北省黄冈贵州省锂盐企业今年吸金能力有多强?前三季赚钱超过去九年总和近日,两家锂盐企业天华超净和中矿资源发布的2022年前三季度业绩预告引起广泛关注。天华超净和中矿资源前三季度盈利均取得了高速增长,其中,天华超净预计,前三季度归母净利润为50。5亿中国女首富,换人红星资本局10月13日消息,彭博亿万富豪榜实时数据显示,范红卫以89。5亿美元(约合人民币644亿元)财富位列全球富豪榜第193位,超过吴亚军成为中国女首富。公开资料显示,范红卫是利空落地是利好?又是周四,按惯例都称为黑色星期四,但是市场今天涨停家数依然80家,总共上涨3143家,两市合计成交继续超过7000亿,赚钱效应不错,虽然尾盘依然有炸板情况出现,但都是能理解的,毕竟全省典型案例!济宁两个城镇低效用地再开发项目入选大众网海报新闻记者闫文文济宁报道近日,山东省自然资源厅发布山东省城镇低效用地再开发典型案例汇编,其中,济宁兖州中欧产业园智能工厂项目被纳入转型升级典型案例济宁邹城盛源精密制造产业园营收下降创同期新低,双汇发展为何不受欢迎了?重视食品安全把消费者的健康问题放在第一位的食品企业,才能走得更长远。来源经理人传媒旗下经理人杂志全媒体记者何雯雯来源官网从行业的佼佼者到父子斗的家族丑闻缠身,近几年来,双汇发展一直
历史毛主席真实身高有多高?坊间争议纷纷,90岁贴身警卫揭开谜团你知道带领新中国走向繁荣富强的毛主席,真实身高到底有多高吗?在很多人印象中,这位生长在南方操着湘潭口音的伟大领袖,有着一米八三的大高个,然而坊间对此却争论不休,有人说主席的真实身高散文诗伟大,来自于平凡疼痛书写的经历,印制在名片上,如同印上一块油黑的肌肤,不容易擦破。分发在别人手中的旅程,从始到终,风一样平静。趁着夜色,将生命的定义织成一件黑色的毛衣,系在低调的脖领上,以抵御各种财经猎豹丨借同学账户内幕交易,知名药企前董事长被罚现代快报讯(记者谷伟)黑龙江证监局日前公布的一则行政处罚决定书,曝光了两年前的一起内幕交易,主角是恒瑞医药前任董事长周云曙。彼时浙江药企司太立与恒瑞医药达成合作,通过后者代理销售碘高于预期!FF91获美国环保局续航认证再信贾跃亭一次?9月22日消息,近日,据华尔街日报报道,法拉第未来旗下首款旗舰SUVFF91获得了美国环保局381英里(约613公里)的续航里程认证。法拉第未来官方称这一认证高于他们的预期,这意味联合国大会上,泽连斯基开出和平条件,要求剥夺俄罗斯一票否决权近日乌克兰总统泽连斯基在西方国家的支持下,以视频讲话这种违反常规的做法,在联合国大会上刷了一波存在感。泽连斯基的讲话内容也不出所料,主要是谴责俄罗斯军事行动,还向西方索要武器,同时两个坏消息,美国政府这次麻烦大了头条创作挑战赛中国在美国眼中是最大对手,这是毋庸置疑的。随着中国综合实力的不断增长,美国对中国的打压力度也在水涨船高。美国将对抗中国打造成为了政治正确,并且有了遏制与围堵中国的执念突然大跌,俄罗斯股市一度跌超10!欧美股市齐跌,汽车巨头重挫12!锂矿拍卖价再创新高,聪明资金加仓这些绩优股数据是个宝数据宝炒股少烦恼澳洲锂矿巨头拍价再创新高,机构看好锂价后市。昨日晚间,俄罗斯股市突然闪崩,俄罗斯MOEX指数盘中一度大跌逾10,跌破2200点,为8月9日以来的首次,收盘女篮世界杯开幕,谁能击败世界大赛52连胜的美国女篮头条创作挑战赛篮球美国女篮长期霸榜世界第一,本届赛事依然当仁不让的占据实力榜首位!纵观历史战绩,美国女篮已实现奥运会7连冠以及世界杯(前身世锦赛)3连冠,上次大赛输球还是在2006俄罗斯被禁止参加欧洲杯抽签5件事01hr俄罗斯被禁止参加2024年欧洲杯抽签2024年欧洲杯预选赛抽签将在今年10月9日举行,公布的相关决议之中,将俄罗斯男足排除在抽签程序之外。这意味着俄罗斯男足继续被欧足联全面一位63岁阿姨的保养方法,很前卫,大家来看看值得吗?最近认识了一位63岁的阿姨,她的女儿25岁了,还没有结婚成家,她似乎也不着急,每天都乐呵呵的。通过和他的聊天,我发现她的保养理念很前卫,并且她的皮肤状态和整个人的精神状态都很好,大初次体验美容项目如何避免坑人机构(一)学会区别生美机构轻医美机构医美机构(ps。主要是随着经济社会发展,人们生活水平提高,爱美人士不断增加,自然而然,医疗美容行业需求日渐旺盛,非法的医疗机构很多,而你却看不出来哟!)生