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

高频面试题请讲一下Java的反射机制

  这个反射其实算是一道初级升中级的面试题,也是初级必须了解,中级必须了解并熟练使用的知识技能。
  接下来就开始聊聊吧。什么是反射?
  反射就是在程序运行状态中,对于任何一个类,都能通过特定的方式方法获取到这个类的属性和方法,并且可以对这些属性、方法进行调用。
  说白了,反射就是在程序运行时获取和执行某个类属性或方法的功能。反射具体能做些什么?
  能做的事情主要分为以下几种。
  我们默认先写好一个类:APP.java;public class APP {      private Integer id;      private String username;          public String password;      public Integer getId() {         return id;     }      public void setId(Integer id) {         this.id = id;     }      public String getUsername() {         return username;     }      public void setUsername(String username) {         this.username = username;     }          public String toString(){         System.out.print("toString");     }          private String toString_2(){         System.out.print("toString_2");     } }获取类
  Class.forName(param)方法
  param:指定类的全路径,比如:com.test.APP,代码如下:    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {          Class aClass = Class.forName("com.test.APP");          APP app = (APP) aClass.newInstance();      }
  这里的newInstance():实例化Class,生成对象,等同于new。调用公共属性(public)
  getField(param):获取指定的公共属性,param:指定的属性名称。
  getFields():获取全部的公共属性,返回值Field[]数组。
  代码如下:    public static void main(String[] args) {         try {             Class aClass = Class.forName("com.test.APP"); //          APP app = (APP) aClass.newInstance();              Field password = aClass.getField("password");                          //打印结果:public java.lang.String com.test.APP.password             System.out.println(password);              Field[] fields = aClass.getFields();                      }catch (Exception e){             e.printStackTrace();         }     }调用私有属性
  getDeclaredField(param):获取指定的私有属性,param:指定的属性名称。
  getDeclaredFields():获取全部的私有属性。
  代码如下:    public static void main(String[] args) {         try {             Class aClass = Class.forName("com.test.APP");              Field username = aClass.getDeclaredField("username");             // 强制获得私有变量的访问权限             username.setAccessible(true);             //打印结果:public java.lang.String com.test.APP.username             System.out.println(username);              Field[] fields = aClass.getDeclaredFields();          }catch (Exception e){             e.printStackTrace();         }     }
  这里还涉及到一个方法,就是setAccessible(true),其作用是获得访问权限,否则无法获取这个属性。调用公共方法 (public)
  getMethod(param):获取指定的公共方法,param:指定的方法名称
  getMethods():获取全部公共方法     public static void main(String[] args) {         try {             Class aClass = Class.forName("com.test.APP");              Method method = aClass.getMethod("toString");              Method[] methods = aClass.getMethods();              //执行toString()方法             Object app = aClass.newInstance();             method.invoke(app);          }catch (Exception e){             e.printStackTrace();         }     }
  这里还有一个知识点,就是如何执行获取到Method方法,在代码中也有体现,可以自行尝试一下。调用私有方法
  getDeclaredMethod(param):获取指定的私有方法,param:指定的私有方法名称。
  getDeclaredMethods():获取全部的私有方法。    public static void main(String[] args) {         try {             Class aClass = Class.forName("com.test.APP");              Method method = aClass.getDeclaredMethod("toString_2");             method.setAccessible(true);              Method[] methods = aClass.getDeclaredMethods();              //执行toString()方法             Object app = aClass.newInstance();             method.invoke(app);          }catch (Exception e){             e.printStackTrace();         }     }

3月份国内汽车产销双降新能源双积分售价或面临大跌本报记者龚梦泽受疫情等多重因素影响,今年以来中国汽车工业的良好发展势头在3月份受阻。4月11日,中国汽车工业协会公布国内3月份及一季度的相关汽车数据。数据显示,今年3月份,汽车产销最高院加强人格权保护法院认定AI陪伴者侵权21世纪经济报道实习记者王巍北京报道今年是民法典施行的第二年。4月11日,最高人民法院民一庭评选出九起人格权司法保护典型民事案例,旨在彰显人民法院人格权司法保护显著成果,指导全国法微信最新功能,微信农场上线,赶快学起来吧微信推出最新模式农场,废话不多说,赶紧学起来,让你做微信中最靓的仔。只需要三步即可实现一点击状态,选择想要的状态模式二点击笑脸,注意是我标记的这个地方,不是输入法键盘上的那个三在搜vivonex5回归,全新骁龙85000mAh120W,有161TB版本最近两年,很多国产智能手机厂商已经全面向高端市场进攻,这也让很多人嘲笑国产手机厂商动不动喊高端口号,其实我们不妨善意地理解成这是一种厂商的自我鞭策,就像大家减肥时动不动发朋友圈监督前华为员工为五双篮球鞋出卖招标数据,涉事上市公司金信诺回应近日,华为员工将越权取得的数据卖给上市公司的消息引发热议。据中国裁判文书网披露的裁定书,前华为员工易某在2010年从华为公司线缆物控部调任后,未按要求将ERP账户中线缆类编码物料价人脸识别信息保护的严格性基础及实现机制来源法治日报原标题人脸识别信息保护的严格性基础及实现机制人脸识别技术属于生物识别技术的一种。随着人工智能大数据技术的发展,人脸识别技术开始在商业领域以及社会生活中得到广泛应用。例如比小米12大?小米12Lite配置曝光骁龙778G6。5英寸屏幕小米在去年年底发布了小米1212Pro和12X之后也获得了不错的市场表现。当然不少人还是继续期待该产品线相应的拓展产品例如小米12Ultra顶级旗舰。不过,目前除了小米12Ultr先见聊聊vivoX80系列4月最后一款真旗舰有段时间没有更新先见这个系列了,这个系列的初衷就是带大家提前了解一些即将新发布的手机,给大家树立正确的心理预期,为下单剁手作准备。4月已经快要过半,目前除了即将发布的几款新机iQO爱优腾变抠了图片来源视觉中国文娱刺儿,作者怡晴直三,编辑Tim4月8日,腾讯视频举办的一场早春业务分享会,在影视从业者的社交网络中刷了屏。因为虽然说是业务分享会,但其中一个核心诉求是省钱。腾讯三星GalaxyA134G手机发布三星这个品牌相信国内的小伙伴们是非常的熟悉的,在当年国内智能手机刚刚起步的时候,三星手机就因为紧跟苹果公司的步伐,把自己吃的满嘴流油,当年只要苹果手机出什么东西,它三星的下一款产品辅助驾驶下半场,撞脸的理想L9和小鹏G9谁是兄,谁是弟?2022年的年初,是晒成绩单的时候,造车新势力蔚小理三强里面,小鹏这边以98155台交出了交付量冠军的亮眼成绩,顶梁柱小鹏P7销量更破了十万。理想仅依靠理想One一款车收获不少奶爸
昨夜今晨多部门就网约车出台新管理条例抖音否认投资极兔滴滴全线裁员2022年2月15日驱动中国昨夜今晨多部门发布加强网约车行业事前事中事后全链条联合监管通知搜狐网报道,交通运输部工信部公安部人力资源社会保障部中国人民银行国家税务总局国家市场监管总双碳目标下新材料迎来新布局来源第一财经资讯以新一代信息技术新能源智能制造等为代表的新兴产业快速发展,对材料提出了更高要求,作为制造业的两大底盘技术之一,新材料也是支撑战略性新兴产业高端制造产业发展的物质基础玩崩了?元宇宙部门巨额亏损,扎克伯格跌出全球富豪榜前十据央视财经报道,由于元宇宙开发部门蒙受百亿美元亏损,而主营广告业务也出现增长疲态,这使得公司股价重挫,而扎克伯格本人也跌出了全球富豪榜前十。部分投资者寄希望于该公司能在上周实现逆转立讯精密董事长王来春公司不造整车张兴旺中国证券报中证网中证网讯(记者张兴旺)2月13日晚间,立讯精密发布投资者关系活动记录表显示,13日下午,公司电话会议吸引了顶流投资机构的接听。立讯精密董事长兼总经理王来春首席京东购中国物流资产,快狗推上市!顺丰增资,新宁2千万贷款逾期2月7日2月13日,据掌链不完全统计,国内外物流与供应链投融资市场发生12起相关品牌企业的投融资事件。一国内物流与供应链1京东增持中国物流资产,持股比例增至65。672月8日,据港好好吃饭,让做菜更简单,七彩叮当绞肉机体验作为北方人,面条饺子是很受欢迎的家常美食,无论是节日还是日常生活它们都是北方人饭桌上的必不可少的美食,所以会经常需要绞肉来制作肉馅肉卤,家中配备一台绞肉机的话自然是方便不少,又可以数字人民币是什么?怎么开通使用?最近大家有没有发现,数字人民币真的来了!过年你可以用数字人民币买长津湖之水门桥电影票了!你在线下门店买东西付款的时候,店家说只能微信支付,可你只有支付宝,你怎么办呢?你在京东苏宁等穆迪上调特斯拉债务评级至Ba1今年或销售140万辆来源盖世汽车谭璇据外媒报道,1月24日,美国著名的三大债券评级机构之一的穆迪公司(Moody)将特斯拉的债务评级从Ba3上调了两级,至Ba1,这反映出穆迪预计特斯拉将继续保持其在纯可以吃后悔药的拍立得,告别废片!富士instaxminievo深度体验欢迎大家来到波露的深度产品体验一个一毕业就在数码行业工作的营销女工今天,要体验的产品是富士新出的新晋网红拍立得Instaminievo我买来重度使用及体验了一个月,来给大家划重点,罗技发布最新有线机械键盘采用黑色拉丝铝镁合金设计近日,罗技最新的有线机械键盘亮相,起步价为69。99美元,包括罗技G413SE和G413TKL。罗技G413SE是全尺寸键盘,而G413TKL是无数字键盘,因此更紧凑更便宜。G41立省30元!康夫美发吹风机179元秒杀据了解,目前康夫旗舰店正在做活动,康夫美发吹风机限时直降30元,最终179元秒杀,喜欢的小伙伴不要错过了!一个人的发型发质直接影响整体形象,康夫这款美发吹风机能更全面地护理头发,抚