先贴上Java反射机制的概念:

  JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;

对于任意一个对象,都能够调用它的任意一个方法和属性;

  这种动态获取的信息以及动态调用对象的方法的功能称为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

比较前两个方法我们可以看出第三种方法才是我们需要的。

虽然这里用是  全路径名 输出的结果也是 全路径名,但取到的是一个 类的字节码文件,可以用它做很多事。

下一篇将会讲到  :获取 类 的 方法 和 属性(包括构造函数)

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

  1. 浅谈Java反射机制 之 获取类的 方法 和 属性(包括构造函数)

    上一篇 获取 类 的字节码文件 我们讲到了获取类的字节码文件的三种方法 第三种方法通过getClass("全路径名")获取字节码文件最符合要求 1.获取构造方法 先贴上我们要获取的 ...

  2. 浅谈Java反射机制 之 使用类的 属性、方法和构造函数

    前面两篇我们总结了Java反射机制如何获取类的字节码,如何获取构造函数,属性和方法, 这篇我们将进一步验证如何使用我们获取到的属性.方法以及构造函数 1.使用 反射 获取到的 属性 import ja ...

  3. 浅谈java反射机制

    目录 什么是反射 初探 初始化 类 构造函数 属性 方法 总结 思考 什么是反射 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意 ...

  4. 浅谈 java 反射机制

    一:Java反射概念 Java反射是Java被视为动态(或准动态)语言的一个关键性质.这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其mod ...

  5. 从Java进程里dump出类的字节码文件

    想要查看一些被增强过的类的字节码,或者一些AOP框架的生成类,就需要dump出运行时的Java进程里的字节码. 从运行的java进程里dump出运行中的类的class文件的方法: 用agent att ...

  6. JAVA反射机制教程-获取类对象

    1. 什么是类对象 类对象,就是用于描述这种类,都有什么属性,什么方法的 2. 获取类对象 获取类对象有3种方式(1). Class.forName(2). Hero.class(3). new He ...

  7. Java反射机制 之 获取类的 方法 和 属性(包括构造函数)(Day_06)

    把自己立成帆,才能招来凤. 运行环境 JDK8 + IntelliJ IDEA 2018.3  本文中使用的jar包链接 https://files.cnblogs.com/files/papercy ...

  8. Java -- 浅入Java反射机制

    1,Java 反射是Java语言的一个很重要的特征,它使得Java具体了"动态性". Java 反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类. 在运行时构造任意一 ...

  9. Java反射机制能够获取的信息,与应用

    一.什么是Java反射机制? [1]反射机制是在运行状态中,对于任何一个类,都能够知道这个类的所有属性和方法: [2]对于任意一个对象,都能够调用它的任意一个属性和方法: 像这种动态获取类的信息以及动 ...

随机推荐

  1. mkfs - 创建一个 Linux 文件系统

    总览 mkfs [ -V ] [ -t 文件系统类型 ] [ fs-选项 ] 文件系统 [ 块 ] 描述 mkfs mkfs 用来在指定设备创建一个 Linux 文件系统,通常是在硬盘上. 文件系统 ...

  2. C功能模块集锦

    1. offsetof #include <stddef.h> size_t offsetof(type, member); The macro offsetof() returns th ...

  3. python引用库异常总结

    一.导入import pandas.io.data as web 时报了"The pandas.io.data module is moved to a separate package & ...

  4. 关于 const char *ptr,char const *ptr,char *const ptr 的讨论

    对于每个做C/C++的伙伴来说,面试中少不了关于const 的考察,尤其是对于刚毕业的新人. 今天听见同事在讨论这个问题,就随手写一下自己的理解.希望对大家又所帮助. 首先来说一下char *ptr: ...

  5. 格式化你的git message

    https://github.com/angular/angular.js/blob/f3377da6a748007c11fde090890ee58fae4cefa5/CONTRIBUTING.md# ...

  6. 【leetcode】491. Increasing Subsequences

    题目如下: 解题思路:这题把我折腾了很久,一直没找到很合适的方法,主要是因为有重复的数字导致结果会有重复.最后尝试用字典记录满足条件的序列,保证不重复,居然Accept了. 代码如下: class S ...

  7. 【leetcode】390. Elimination Game

    题目如下: 解题思路:对于这种数字类型的题目,数字一般都会有内在的规律.不管怎么操作了多少次,本题的数组一直是一个等差数列.从[1 2 3 4 5 6 7 8 9] -> [2 4 6 8] - ...

  8. python-unittest生成报告的几种方式

    import unittest suite = unittest.TestSuite() #构造套件 #按测试方法添加 suite.addTest(测试类名('方法名')) suite.addTest ...

  9. es6 语法使用

    一.相关背景介绍 我们现在大多数人用的语法javascript 其实版本是ecmscript5,也是就es5.这个版本己经很多年了,且完美被各大浏览器所支持.所以很多学js的朋友可以一直分不清楚es5 ...

  10. qt学习(一)qt三个文件函数的框架

    学到点什么, 而不是复制着什么, 每天敲着别人给的代码,苦涩得改完bug, 就这样一天天的过去, 实质上并没有学到什么, 别人的思想只是拿来借鉴, 你的思想是好是坏都是你的, 不用急着抛弃自己. 从q ...