反射

本文介绍了Java反射机制的基础知识,包括如何通过三种不同的方式获取Class对象,以及如何利用反射来实例化对象。反射不仅可以帮助我们获取类的信息,还能通过动态实例化对象减少代码冗余。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

反射获取类信息和实例化对象
一、获取类的信息

java.lang.Class是一个类,这个类是反射操作的源头,即所有反射都要从此类还是进行,有3种获取Class对象的方式:

第1种:调用Object的getClass方法

        先产生对象,在获取源头


第2种:使用类.class取得(常用于Hibemate、MyBatis、Spring),这种方式需要在编译时就知道类的名称。

        不用产生对象,可以直接取得


第3种:使用Class类的forName()静态方法

        该方法需要传入字符串,并且该字符串的值是类的全名(包括完整的包名),如果不是类的全名,会抛出一个ClassNotFoundException的异常。

        实例化Class类对象语法:public static Class<?>forName()


二、反射实例化对象

        实例化对象方法:方法1:使用Class对象的newInstance()方法创建对象;方法2:使用Constructor对象创建对象

        方法1:要求Class类有默认构造方法


        方法2:可以利用Constructor对象指定的构造方法创建对象

        先使用Class对象获取指定的Constructor对象,再调用Constructor对象的newInstance()方法创建该Class对象对应类的实例


很重要的一句话:new也能实例化,而且比反射实例化简单,但是,new是代码冗余的根本原因,反射可以减少冗余,提高代码效率!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值