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

高频面试题请讲一下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();         }     }

安卓微信连升两级,拍一拍又出新花样,能拍出炸弹烟花IOS的微信版本都已经更新到了v8。0。6了,而安卓用户的微信还停留在v8。0。3,为什么每次都是苹果先上?不要着急,这次微信安卓版本直接跳过了中间版本连升两级,已经在内测v8。02021年,华为涅槃重生1995年,华为筹建部门,开始了无线领域的产品研发。经过两年多的努力,华为终于开发出具有自主知识产权的移动通信系统。同时,公司内部有人提议研发移动通信电话,国家邮电部甚至主动向华为字节跳动副总裁谢欣希望就封杀飞书一事与微信协商5月19日,2021春季飞书未来无限大会在京举办。采访环节,有媒体提及关于微信端口限制飞书的问题,双方在1月份之后有没有进行过协商?飞书会不会通过法律手段来做一些行动?对此,字节跳一部手机能好看到什么程度?vivoS9真机图赏如今很多人在选择5G手机时,已经不再将目光单纯的聚焦在性能之上,而是会更多的参考外观设计以及自拍表现等多方面。当前手机市场上,好看的手机有不少,但如果从中挑选一款颜值最高的5G手机小米11系列销售火爆,全球销量突破300万夯实高端市场地位2021年5月21日,小米手机通过官方微博正式宣布,小米11系列全球销量突破300万台。同时根据权威第三方统计机构公布的数据,截至2021年1月4月,小米11系列在40006000苏宁618启动预售可用购物补贴,5月24日开抢5月20日消息,苏宁易购618预售将于5月24日0点正式开启。用户抢订好货的同时,还可领取购物补贴,6月1日支付尾款,折扣加倍。据悉,6月1日被锁定为第一轮爆发。6月12日17日,月球土壤跟地球有什么差别?研究月球土壤有什么用?绝大多数科学家其实是将月球土称之为风化浮土,而并非土壤。月球浮土的形成是因为流星的冲击,将岩石分裂成较小的石块或粒子。太阳风暴射出的带电粒子流,又将这些岩石粒子不停磨碎,直至浮土一彻底抛弃华为用户?谷歌送上神助攻,这次鸿蒙系统更稳了彻底抛弃华为用户?谷歌送上神助攻,这次鸿蒙系统更稳了!华为的手机销量近年来不断在下跌,连带着一些分析人士看衰华为消费者业务的未来。不过自从华为的鸿蒙OS2。0系统开始推送以来,华为需要8256的手机,不玩游戏,有什么推荐?文小伊评科技根据题干大概可以归纳出题主的择机方向1。内存容量8256G以上2。不玩游戏(不玩游戏并不是一个特异性的要求,不过我们可以解读为会更加在意除了性能之外的配置,譬如影像,C一直有个问题想不通,导航系统那么厉害,战时被打下来怎么办?你能想到的,世界大国早就想到了。在北斗开始研发时美国就威胁中国,说如果发射导航卫星就给打下来。然而,中国却自己研发出了反卫星武器,美国只好放弃这个想法。所以,在我看来,能击落卫星的为什么有人说炒币不如屯币,买币不如挖矿?四年前的某一天,当时我合伙人的一个朋友,在华强北开店做电脑生意。着急找我这合伙人借钱,也不是个小数目,说是要倒卖矿机,先从比特大陆进货,然后等一个月后矿机到了以后加价销售,差不多能
双11看直播收快递青藏线大凉山进厂出海全球云监工又来了全球快递云监工又来了。记者从阿里菜鸟获悉,11月1日0点开始,天猫双11快递直播将连续第二年上线。今年,云监工会持续11天,快递直播点覆盖全国10余省份,上山进村,还将首次进行跨国以换电模式助力新能源出租车推广近年来,全国多地开始大力推广公交车出租车等运营车辆的电动化。据调查数据显示,截止2019年末,新能源公交车保有量占公交车保有量的比重达59。1,而新能源出租车却只占10。2。对于新掌握餐饮管理知识有必要吗?开店做品牌,找准差距许多小白对餐饮行业的认识,大多停留在和几位好友聊天创业项目后,便可以着手开店,自认为餐饮简单收效快,却不知其中也大有门道。同样大环境下的商铺,有的顾客盈门,有的却冷冷清清。或许你能NVIDIA推出OmniverseEnterprise!助力企业在虚拟世界无缝协作NVIDIA在春季GTC大会上宣布NVIDIAOmniverseEnterprise即将全面上市。这是全球第一个可以让处于世界各地的3D设计团队跨多个软件套件工作,并在同一共享虚拟充电4小时收一块钱到底鸡贼在哪里我跟一个河北客户说,装了充电桩按照市场价收费就行了,3小时收一块钱,不足3小时的自动折合分钟计费。他说他们小区现有的充电桩5小时收一块钱,让我帮忙分析是什么套路。正好,昨天网易新闻索尼PS5主板没集显!AMDCardinal平台首发测试前言近日AMD悄悄发布了甚为怪异的Cardinal平台,CPU是早先为索尼PlayStation5专门定制的单芯片解决方案,7nm工艺Zen2架构8核心16线程的R74700S。搭拆解指南!戴尔G15游戏本换硅脂后性能提升20前言今年游戏本市场可谓是血雨腥风,作为御三家之一的戴尔,祭出有小外星人之称的G15,凭借着强大的配置和亲民的售价,成为近期最热门的游戏本。本人手里这台G15已经使用了几个月,北方干奥迪A6ETron或在2022年内投产,跟保时捷Taycan同平台打造都知道未来是新能源汽车的天下,大众本田丰田现代等知名车企都开始往电气化转型,而豪华品牌也是如此,近日我们从神奇的海外媒体获悉到,奥迪A6ETron掀背版将于明年正式发售,这也是奥迪MAC电脑连接RICOH理光打印机无法打印?我来教你如何解决自从公司将打印机换成RICOH理光之后我的MAC电脑就不能正常打印了,联系客服后RICOH理光的技术人员要我去RICOH理光官网下载最新的ForMAC打印机驱动打印驱动下载界面最新金秋9月,无限极直销2021919养生行走日来了每一天我们都在行走,每个人行走的方式都有所不同,有人喜欢独享风景,有人喜欢携手同行,但同样的是,我们热爱的世界,就在脚下。金秋9月,为推广健康良好的生活方式,为全民的免疫力1,91金秋9月,无限极直销2021919养生行走日来了每一天我们都在行走,每个人行走的方式都有所不同,有人喜欢独享风景,有人喜欢携手同行,但同样的是,我们热爱的世界,就在脚下。金秋9月,为推广健康良好的生活方式,为全民的免疫力1,91