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

1.1.1 反射介绍

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

  简单来说, 就可以把.class文件比做动物的尸体, 而反射技术就是对尸体的一种解剖.
  通过反射技术, 我们可以拿到该字节码文件中所有的东西, 例如成员变量, 成员方法, 构造方法, 而且还包括私有

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

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

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

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

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

1.1.3 案例代码

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.1.4 问题: 字节码对象是用来描述什么的?

用来描述.class文件的.
         面向对象阶段的时候讲过java中描述事物都是通过类的形式
         而字节码文件也可以看做为一种事物, 如何描述这种事物? 那就看看这个事物是由什么组成的了

            1. 成员变量
            2. 成员方法
            3. 构造方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值