廖雪峰Java读书笔记(三)--反射

2020-08-24  本文已影响0人  拜仁的月饼

1. 定义

反射就是Reflection,Java的反射是指程序在运行期可以拿到一个对象的所有信息。所以,反射是为了解决在运行期,对某个实例一无所知的情况下,如何调用其方法,换句话说就是反推

我们可以得出结论:class(包括interface)的本质是数据类型(Type)。无继承关系的数据类型无法赋值。

2. 访问字段

对于任意一个Object实例,只要获得其Class,就意味着可以获取一切信息。Class类提供了以下几个方法来获取字段:

获取值的方法:先获取Class实例,再获取Field实例,然后,用Field.get(Object)获取指定实例的指定字段的值。

设置字段值是通过Field.set(Object, Object)实现的,其中第一个Object参数是指定的实例,第二个Object参数是待修改的值。

一个Method对象包含一个方法的所有信息:

调用方法时,用getMethod()方法。调用静态方法时,由于无需指定实例对象,所以invoke方法传入的第一个参数永远为null。为了调用非public方法,我们通过Method.setAccessible(true)允许其调用。

可以通过getSuperClass来调用获得父类class,用getInterfaces来获取继承接口。

上一篇 下一篇

猜你喜欢

热点阅读