先贴上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中的方法获取 类中的 方法和属性(包括构造方法)

转载于:https://www.cnblogs.com/mww-NOTCOPY/p/11218024.html

浅谈Java反射机制 之 获取类的字节码文件 Class.forName(全路径名) 、getClass()、class...相关推荐

  1. 浅谈Java多线程机制

    浅谈Java多线程机制 (-----文中重点信息将用红色字体凸显-----) 一.话题导入 在开始简述Java多线程机制之前,我不得不吐槽一下我国糟糕的IT界技术分享氛围和不给力的互联网技术解答深度. ...

  2. JAVA反射机制、Class类及动态加载、成员变量构造方法其他方法的反射与调用、代理模式AOP

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的任意一个方法和属性: 这种动态获取的信息以及动态调用对象的方法的功能称为java语言 ...

  3. 浅谈Java反射的实现原理

    从一段示例代码开始 Class clz = Class.forName("ClassA");Object instance = clz.newInstance();Method m ...

  4. 浅聊Java反射机制(三)

    引入 即使没有学过反射,大家也一定会见过invoke方法.因为很多方法调用都是靠invoke方法,所以很多异常的抛出都会定位到invoke方法,比如下面的情形大家会很熟悉: java.lang.Nul ...

  5. 浅谈Java反射(Reflect)技术--常用方法

    Java反射(Reflect)技术 概念:动态获取在当前Java虚拟机中的类.接口或者对象等等信息(运行过程中读取内容) 1.作用(面试问题): 1.1 解除两个类之间的耦合性,即在未得到依赖类的情况 ...

  6. java反射 用处_浅谈Java反射

    一.何为反射 反射就是对于任何一个类都能知道这个类的的所有属性和方法,并且对于任何一个对象都能调用他的属性和方法,而且能修改其属性. 二.反射的作用 就我的理解来看,通常我们在写代码的时会非常强调代码 ...

  7. Java反射机制涉及的类常见方法使用总结

    1 import java.lang.reflect.Constructor; 2 import java.lang.reflect.*; 3 4 /*Class:代表一个字节码文件的对象,每当有类被 ...

  8. 浅谈Java回调机制

    像许多网上介绍回调机制的文章一样,我这里也以一个现实的例子开头:假设你公司的总经理出差前需要你帮他办件事情,这件事情你需要花些时间去做,这时候总经理肯定不能守着你做完再出差吧, 于是就他告诉你他的手机 ...

  9. java日期用什么属性_java日期以及使用Java反射机制遍历实体类的属性和类型

    fmt:formatDate 的输出格式 fmt关于时间格式的输出 2004-5-31 23:59:59 2004-4-1 23:59:59 JSTL标签fmt:formatDate引起的中文乱码问题 ...

最新文章

  1. swift_035(Swift之第三方库Kingfisher篇)
  2. uniapp在ios端每个页面都可以上下拉,阻止方法
  3. 什么是CPython
  4. [问题处理]redmine的gantt图导出出现‘星星星星星星星星’怎么解决
  5. 一个C#和C++执行效率对比的简单实例
  6. Android开发之Android studio代码版本回退教程
  7. mysql切换到使用openssl,MySQL主从复制+OpenSSL
  8. P1136 迎接仪式
  9. 关于ubuntu无法启动nginx的问题
  10. 盘点618 .NET 程序员必“败”书单
  11. Netty的ChannelFuture和ChannelPromise
  12. 佳能MP259打印重影的问题始终无法得到彻底解决,今天终于找到方法了
  13. 反素数(高合成数?)
  14. Matlab循环语句
  15. android 自定义View【2】对话框取色色盘取色的实现
  16. 脚本重启电信天翼网关
  17. html5+资源甘特图,VARCHART XGantt VSW资讯:HTML5甘特图中的各个资源工作时间
  18. 如果通过这次面试我们单位录用了你,但工作一段时间却发现你根本不适合这个职位,你怎么办?
  19. AWD平台搭建与使用入门
  20. android 全套安装包,原神1.1直装版下载-原神1.1完整安装包v1.1安卓版下载_飞翔下载...

热门文章

  1. java进销存一个人要做多久,如何取得当前年的时间! 找java进销存系统
  2. python项目归纳总结-python总结七
  3. python基础教程第三版豆瓣-1024,程序媛/猿请查收!
  4. python画图代码turtle-使用Python的turtle模块画图的方法
  5. 如何看电脑安装了python-Python教程第1篇:查看电脑是否安装python
  6. python知乎-知乎看了很多推荐,最终选了这本Python入门
  7. python修改excel数据-python之实现对excel表格数据的修改
  8. python基础代码事例-python基础第三章
  9. python创建csv文件并写入-Python数据写入csv格式文件
  10. python怎么学最快-怎么样快速高效学习Python