浅谈Java反射机制 之 获取类的字节码文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了浅谈Java反射机制 之 获取类的字节码文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1793字,纯文字阅读大概需要3分钟。
内容图文
![浅谈Java反射机制 之 获取类的字节码文件](/upload/InfoBanner/zyjiaocheng/755/bb306e55543147618555be03fb11c767.jpg)
先贴上Java反射机制的概念:
AVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法和属性;
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
这么一讲很强大有没有!
反射的机制的实现还有仰仗Class类,因为想要剖析一个类就必须先要获取到该类的字节码文件对象,而Class类用于表示.class文件(字节码)
而且从获取到剖析使用的都是Class类的方法。
获取类字节码方法有三种:
1、通过实例化对象的 stu.getClass() 获取到字节码文件
getClass()方法其实是Object的一个方法,Class继承了Object,所以我们可以直接使用。
public class Test01 { public static void main(String[] args) { Student stu=new Student(); Class c=stu.getClass(); System.out.println(c.getName()); } }
结果:com.reflection.model.Student
当然这种方法没什么意义,因为我们都 new 实例化对象了,就没有必要反射了。
2、通过类的 .class 属性获取类的字节码文件
import com.reflection.model.Student; public class Test02 { public static void main(String[] args) { Class c= Student.class; System.out.println(c.getName()); } }
结果:com.reflection.model.Student
这种方法比第一种方法稍好,当也有不足之处,因为需要导入类的包,这样做依赖性太强,不利于解耦。
3、通过类的全路径名获取Class对象 使用Class.forName("全路径名")来实现
此处可能会报出 ClassNotFoundException 异常因为 你给的全路径名可能不存在,因此给他加一个try{}cath(){}
public class Test03 { public static void main(String[] args) { try { Class c=Class.forName("com.reflection.model.Student"); System.out.println(c.getName()); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
结果:com.reflection.model.Student
比较前两个方法我们可以看出第三种方法才是我们需要的。
虽然这里用是 全路径名 输出的结果也是 全路径名,但取到的是一个 类的字节码文件,可以用它做很多事。
下一篇将会讲到 使用 Class中的方法获取 类中的 方法和属性(包括构造方法)
内容总结
以上是互联网集市为您收集整理的浅谈Java反射机制 之 获取类的字节码文件全部内容,希望文章能够帮你解决浅谈Java反射机制 之 获取类的字节码文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。