首页 / JAVA / Java中反射 API 的使用
Java中反射 API 的使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java中反射 API 的使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2080字,纯文字阅读大概需要3分钟。
内容图文
![Java中反射 API 的使用](/upload/InfoBanner/zyjiaocheng/841/024d008fa0414086972e980b208a24cf.jpg)
一、什么是反射:
在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法(包括私有的方法和属性),对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的功能就称为java语言的反射机制。通俗点讲,通过反射可以获取该类所有的属性和方法。
二、API 使用:
public static void test() throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException { // 1、获取字节码文件的三种方法 Class psnClass = Class.forName("model.Person"); //通过Class类中的静态方法forName,直接获取到一个类的字节码文件对象,此时该类还是源文件阶段,并没有变为字节码文件。 Class psnClass2 = Person.class; // 当类被加载成.class文件时,此时Person类变成了.class,在获取该字节码文件对象,也就是获取自己, 该类处于字节码阶段。 Person s = new Person(); Class psnClass3 = s.getClass(); // 通过类的实例获取该类的字节码文件对象,该类处于创建对象阶段 //通过字节码对象调用无参构造器创建Person实例对象 Person person = (Person) psnClass.newInstance(); person.getNameAndAge(); //通过字节码对象获取有参构造器对象,创建Person实例对象 Constructor constructor = psnClass.getConstructor(int.class, String.class); Person person1= (Person) constructor.newInstance(18,"wu"); person1.getNameAndAge(); Constructor[] constructors = psnClass.getConstructors(); for (Constructor c : constructors) { System.out.println("构造器:" + c.getName()); } // 获得指定方法 Method getName = psnClass.getDeclaredMethod("getName"); getName.setAccessible(true); // 设置可访问 getName.invoke(person); // 执行方法 Method[] declaredMethods = psnClass.getDeclaredMethods(); for (Method m : declaredMethods) { System.out.println("方法名: " + m.getName()); m.setAccessible(true); m.invoke(person1); } // 获得私有属性 Field name = psnClass.getDeclaredField("name"); name.setAccessible(true); name.set(person,"li"); Method getNameLi = psnClass.getDeclaredMethod("getName"); getName.setAccessible(true); getName.invoke(person); Field[] fields = psnClass.getDeclaredFields(); for (Field f : fields) { System.out.println("成员变量: " + f.getName()); } }
内容总结
以上是互联网集市为您收集整理的Java中反射 API 的使用全部内容,希望文章能够帮你解决Java中反射 API 的使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。