Java反射机制

什么是反射:

    Java的反射机制是在运行状态中,对于任何一个类,
都能够知道这个类的所有属性和方法;对于任何一个对象,
都能调用它的任何一个方法。这种动态获取信息和动态调
用对象的方法的功能称为Java语言的的反射机制。(主要
是指程序可以访问,检测和修改它本身状态或行为的一种能力)
简单来说,反射机制是指程序在运行时能够获取自身的信息。
在java中,只要给定类的名字,那么就可以通过反射机制来
获取类的所有信息。包括其访问修饰符,父类,实现的接口,
属性和方法的所有信息,并可在运行时创建对象,修改属性
(包括私有的),调用方法(包括私有的)。

Class对象:

    类是程序的一部分,每个类都有一个Class对象。换言说,
每当编写并且编译了一个新类,就会产生与之对应的一个Class
对象。(要想操纵类中的属性和方法,都必须从获取Class对象开始)
Class类没有公共的构造方法。Class对象是在加载时由java虚拟机
以及通过类加载器中的方法自动构造的,因此不能显示地声明一Class对象。

通过反射实例化对象:

实例化无参构造函数对象,有两种方式:

1. Class.newInstance();
2. Class.getContentstructor(new Class[]{}).newInstance(new Object[]{});

实例化带参构造函数对象:

class.getConstructor(Class<?>...parameterTypes).newInstance(Object...initargs);

反射的总结:

1.只要用到反射,先获得Class对象。
2.没有方法能获得当前类的超类(父类)的private方法和属性,
    你必须通过getSuperclass()找到超类以后再去尝试获得。
3.通常情况即使是当前类,private属性和方法也是不能访问的,
    你需要设置压制权限setAccessible(true)来取得private
    的访问权。但实话说,这已经破坏了面向对象的规则,
    所以除非万不得已,请尽量少用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值