生理学 化学感受器反射有几种途径?其机制如何

2020-09-04 教育 83阅读
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。当然反射本身并不是一个新概念,它可能会使我们联想到光学中的反射概念,尽管计算机科学赋予了反射概念新的含义,但是,从现象上来说,它们确实有某些相通之处,这些有助于我们的理解。
Java反射机制主要提供下面几种用途:
在运行时判断任意一个对象所属的类
在运行时构造任意一个类的对象
在运行时判断任意一个类所具有的成员变量和方法
在运行时调用任意一个对象的方法
以下,我们就以动态创建对象为例,通过代码来解释一下反射:
public class ReflectionTest {
public static void main(String[] args) throws Exception {
// 建立学生对象
Student student = new Student();
// 为学生对象赋值
student.setStuName("Wanggc");
student.setStuAge(24);
// 建立拷贝目标对象
Student destStudent = (Student) copyBean(student);
// 输出拷贝结果
System.out.println(destStudent.getStuName() + ":"
+ destStudent.getStuAge());
}
/**
* 拷贝学生对象信息。
*
* @param from
拷贝源对象
* @param dest
拷贝目标对象
* @throws Exception
例外
*/
private static Object copyBean(Object from) throws Exception {
// 取得拷贝源对象的Class对象
Class fromClass = from.getClass();
// 取得拷贝源对象的属性列表
Field[] fromFields = fromClass.getDeclaredFields();
// 取得拷贝目标对象的Class对象
Object ints = fromClass.newInstance();
for (Field fromField : fromFields) {
// 设置属性的可访问性
fromField.setAccessible(true);
// 将拷贝源对象的属性的值赋给拷贝目标对象相应的属性
fromField.set(ints, fromField.get(from));
}
return ints;
}
}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com