Java反射机制快速学习上手二(调用类的参数)

2025-11-12 05:27:21

1、首先我要先讲解一下为什么反射调用class的参数要比反射调用类的函数要更加复杂,之前已经说过,一个类名在内存中只能有一个class的位置进行存放,如果要加载新的,必须要从外存中读取这个class。而我们都知道,对于不同的实体类,method方法都是一模一样的,所以调用方法直接调用就可以了,但是参数很明显不同的实体类是不一样的,所以这就需要不一样的方法来获取不同的实体类的参数,包括还有public、protected以及private的参数,也有区别。

Java反射机制快速学习上手二(调用类的参数)

2、下图为调用类内参数使用的反射机制的函数,这里来一一介绍下它们的用法:

1.public Constructor[] getConstructors():这个是获取所有类的public构造方法,注意是所有类、public、构造方法。

2.public Constructor[] getDeclaredConstructors():这个与上面的区别是这个没有public的设定,只要是构造方法,无论是不是public的,即便他是private还是protected的构造方法,这个函数也能获取。

3.public Constructor getConstructor(Class... parameterTypes)与第一个的不同是这个是获取固定一个类的public构造方法。

4.public Constructor getDeclaredConstructor(Class... parameterTypes)与第二个不同,这个只能获取一个固定的类。

Java反射机制快速学习上手二(调用类的参数)

3、那我们来举一个例子吧,还是以Student为例,这个里面使用了上述四个方法,可以分别得到相应的构造函数,我们就可以利用这个函数进行构造类了。

调用构造的方法是Constructor-->newInstance(Object... initargs) 这个方法。

Java反射机制快速学习上手二(调用类的参数)

Java反射机制快速学习上手二(调用类的参数)

4、说了构造函数的调用,我们再来看下调用具体参数的函数吧:

1.Field[] getFields():这个函数可以获取到所有class中所有的public方法

2.Field[] getDeclaredFields():与第一个不同在可以获取所有方法

3.public Field getField(String fieldName):获取某个class的public方法

4.public Field getDeclaredField(String fieldName):获取某个字段(可以是私有的)  

Java反射机制快速学习上手二(调用类的参数)

5、而设置字段的值则要通过Field --> public void set(Object obj,Object value)方法来实现,我们来解释下参数:

1.obj:要设置的字段所在的对象;

2.value:要为字段设置的值;

6、最后,我们来通过一个实例来尝试实现反射机制吧:

这个例子也十分的简单,相信各位可以通过上面的学习迅速理解其中的意思

Java反射机制快速学习上手二(调用类的参数)

Java反射机制快速学习上手二(调用类的参数)

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢