第1关:3种方式获取类class字节码对象

本文介绍了Java反射的概念,它是运行时获取类的方法、属性等信息的机制。通过反射可以实例化对象、调用私有方法,并在运行时处理不确定的类。文中提供了一个示例代码,展示了通过`Class.forName()`,`对象.getClass()`和`Class`静态方法的三种方式获取`Student`类的`Class`对象。
摘要由CSDN通过智能技术生成

任务描述

本关任务:编写一个3种反射方法获取相应对象。

相关知识

1.1 什么是 Java 的反射

Java 反射是可以让我们在运行时获取类的函数、属性、父类、接口等 Class 内部信息的机制。通过反射还可以让我们在运行期实例化对象,调用方法,通过调用 get/set 方法获取变量的值,即使方法或属性是私有的的也可以通过反射的形式调用,这种“看透 class”的能力被称为内省,这种能力在框架开发中尤为重要。 有些情况下,我们要使用的类在运行时才会确定,这个时候我们不能在编译期就使用它,因此只能通过反射的形式来使用在运行时才存在的类(该类符合某种特定的规范,例如 JDBC),这是反射用得比较多的场景。

还有一个比较常见的场景就是编译时我们对于类的内部信息不可知,必须得到运行时才能获取类的具体信息。比如 ORM 框架,在运行时才能够获取类中的各个属性,然后通过反射的形式获取其属性名和值,存入数据库。这也是反射比较经典应用场景之一。

package step1;


public  class  Reflection{

    public static void main(String[] args)  {
        Class <?> studentClass1 = null;
        Class <?> studentClass2 = null;
        Class <?> studentClass3 = null;
        // ---------------------Begin------------------------
        // Studnet 类的路径为 "step1.Student"
        Student p1=new Student();

        try {
            studentClass1=Class.forName("step1.Student");
        }catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
        studentClass2=p1.getClass();
        studentClass3=Student.class;
        // ---------------------End------------------------
        System.out.println(studentClass1);
        System.out.println(studentClass2);
        System.out.println(studentClass3);
    }

}

哦吼吼,代码需要登录才能复制,而块引用不需要,但是代码有高亮缩进,看着比较清爽,所以两者结合。。。。也不会同时具有两者的优点的好像。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值