反射可以在代码运行时动态获取对象、调用方法、设置属性。动态运行减少了代码耦合,提高了灵活性。它的JDBC库是通过反射加载的。实例操作以User对象为例:/**File:User.java*User:iChochy*URL:https://icochy.com*Copyright(c)2020*Date:2020/08/3110:18:31*/packagecom.ichochy.example;publicclassUser{privateStringname=”iChochy”;私人年龄=32;私有字符串url=”https://icochy.com”;publicvoiddisplay(){System.out.println("姓名:"+姓名);System.out.println("年龄:"+age);System.out.println("网址:"+url);}}正常调用Useruser=newUser();user.display();获取对象类动态获取//获取类Class>clazz=User.class;//获取对象Objectobj=clazz.newInstance();类路径获取//获取类Class>clazz=Class.forName("com.icochchy.example.User");//获取对象Objectobj=clazz.newInstance();获取属性并获取所有Field[]字段=clazz.getDeclaredFields();for(Fieldfield:fields){System.out.println(field.getName());//name,age,url}属性名获取Fieldfield=clazz.getDeclaredField("age");System.out.println(field.getName());//年龄设置属性Objectobj=clazz.newInstance();Fieldfield=clazz.getDeclaredField("age");//获取私有属性field.setAccessible(true);//设置反射访问检查System.out.println(field.get(obj));//32field.set(obj,18);//设置属性System.out.println(field.get(obj));//18get方法获取所有Method[]methods=clazz.getMethods();for(方法method:methods){System.out.println(方法.getName());//display}方法名获取Methodmethod=clazz.getMethod("display");System.out.println(method.getName());//显示调用方法Objectobj=clazz.newInstance();Method[]methods=clazz.getMethods();for(Methodmethod:methods){//调用显示方法if("display".equals(method.getName())){方法调用(obj);}}方法名调用Objectobj=clazz.newInstance();Methodmethod=clazz.getMethod("display");method.invoke(obj);相关文章Java中的Override和Overload)2020/08/20免费申请JetBrains开源开发许可证,包括IDEA2020/08/19Java开发环境搭建,开启你的编程之旅2020/08/15来源:https://icochy.com/posts/20200823.html请点赞转发!
