面试之Java圣经9

本文介绍了Java反射机制,包括其定义、好处、如何获取对象以及使用步骤。反射允许程序在运行时动态获取类信息并调用方法,提高了灵活性,但性能较低。在Spring框架中,反射与注解结合发挥关键作用。
摘要由CSDN通过智能技术生成

今天来聊聊反射这个概念

一、反射是什么?

        反射是在运行状态中,对于一个任意类,都能够获取到这个类得所有属性和方法,对于任意一个对象,都能够调用它得任意一个方法和属性,这种动态获取信息以及动态调用对象得方法得功能称为Java得反射机制。

二、反射是有什么好处?

        优点:能够在运行时动态获取类得实例,提高灵活性

        缺点:反射性能比较低,需要解析字节码,将内存中得对象进行解析。

三、反射如果获取对象?

        Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。

1.Class.forName("类得路径")

Class class = class.forName("test.demo.Main")

2.类名.class

Class class = Main.class

3.对象名.class

Main main = new Main();
Class class= main.getClass();

四、反射使用的步骤

    1.获取想要操作类的对象,这是反射的核心。

    2.调用Class类的方法,即就是反射的使用。

   3.使用API来操作d这些信息。

public class Apple {
    private int price;
    public int getPrice() {
    return price;
    }
    public void setPrice(int price) {
    this.price = price;
    }
    public static void main(String[] args) throws Exception{
        //正常的调用
        Apple apple = new Apple();
        apple.setPrice(5);
        System.out.println("Apple Price:" + apple.getPrice());
        //使用反射调用
        Class clz = Class.forName("com.test.Apple");
        Method setPriceMethod = clz.getMethod("setPrice", int.class);
        Constructor appleConstructor = clz.getConstructor();
        Object appleObj = appleConstructor.newInstance();
        setPriceMethod.invoke(appleObj, 14);
        Method getPriceMethod = clz.getMethod("getPrice");
        System.out.println("Apple Price:" +
        getPriceMethod.invoke(appleObj));
    }
}


总结

反射是在Spring中一个重要的组成部分,其中注解都是通过反射实现的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值