java中反射机制概述、字节码对象的获取方式

来源:互联网 发布:淘宝手工皮具店 编辑:程序博客网 时间:2024/06/08 01:22



java中反射机制概述、字节码对象的获取方式




反射机制的概述和字节码对象的获取方式




反射介绍

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

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

这种动态获取的以及动态调用对象的方法的功能称为java语言的反射机制.

简单来说, 就可以把.class文件比做动物的尸体, 而反射技术就是对尸体的一种解剖.


通过反射技术, 我们可以拿到该字节码文件中所有的东西, 例如成员变量, 成员方法, 构造方法, 而且还包括私有




 字节码文件获取的三种方式

1. 对象名.getCalss(); // 次方法来自于Object  对象已经存在的情况下, 可以使用这种方式

2. 类名.class // 类名.class这是一个静态的属性只要知道类名就可以获取

3. Class.forName(“com.itheima_01.Student”); //通过Class类中的静态方法指定字符串该字符串是类的全类名(包名+类名)

// 此处将会抛出异常都系 ClassNotFoundException 防止传入错误的类名




 案例代码

package com.itheima_01;/* * 反射: * 在运行时,我们可以获取任意一个类的所有方法和属性 * 在运行时,让我们调用任意一个对象的所有方法和属性 *  * 反射的前提: * 要获取类的对象(Class对象) * */public class ReflectDemo {public static void main(String[] args) throws ClassNotFoundException {// 通过Object的getClass()方法获取,必须要有对象Student s = new Student();Class clazz = s.getClass();// 通过类名获取字节码对象Class clazz2 = Student.class;// static Class<?> forName(String className)Class clazz3 = Class.forName("com.itheima_01.Student");System.out.println(clazz == clazz2);System.out.println(clazz == clazz3);System.out.println(clazz);}}







阅读全文
1 0