本文实例讲述了Java基础之反射原理与用法。分享给大家供大家参考,具体如下:
1。什么是反射吗?
反射其实就是动态的加载类,我们在写JDBC的时候加载驱动<代码> forname (“xxx”)> 代码时就涉及到了反射。
是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
2。反射机制能做什么?
1。在运行时判断任意一个对象的所属的类。
2。在运行时判断构造任意一个类的对象。
3。在运行时判断任意一个类所具有的成员变量和方法。
4。在运行时调用任意一个对象的方法。
3。反射机制相关的API
获得完整的包名和类名
Student.java
包com.reflect.test; 公开课学生{ 私人int id; 私人字符串名称; 公共的学生(){} 公开学生(int id字符串名称){ 超级(); 这一点。id=id; this.name=名称; } 公共int getId () { 返回id; } 公共空间setId (int id) { 这一点。id=id; } 公共字符串getName () { 返回名称; } 公共空间setName(字符串名称){ this.name=名称; } @Override 公共字符串toString () { 返回“学生[id=" +身份证+”,name=" +名字+ "]”; } } >之前Test.java
包com.reflect.test; 公共类测试{ 学生stu=new (); 公共静态void main (String [] args) { 测试测试=新测试(); test.getClassName (); }//获得完整的包名和类名 公共空间getClassName () { System.out.println (stu.getClass () . getname ()); } } >之前运行结果
com.reflect.test.Student 引用>
获取类的三种方法
公共静态void main (String [] args) { 测试测试=新测试(); test.getStudentClass (); }//获取类对象的三种犯法 公共空间getStudentClass () {//第一种方法,forName Class<& # 63;比;class1; 尝试{ class1=forname (“com.reflect.test.Student”); System.out.println (“class1:“+ class1); }捕捉(ClassNotFoundException e) { e.printStackTrace (); }//第二种方法,类 Class<& # 63;比;class2=Student.class; System.out.println (“class2:“+ class2);//第三种方法,getClass () 学生stu1=new (); Class<& # 63;比;类别3=stu1.getClass (); System.out.println (“class3:”+ class3); } >之前运行结果
com.reflect.testclass1:类。学生
引用>
com.reflect.test class2:类。学生
类别3:类com.reflect.test.Student更多的java相关内容感兴趣的读者可查看本站专题:《java面向对象程序设计入门与进阶教程》、《java数据结构与算法教程》、《java操作DOM节点技巧总结》,《java文件与目录操作技巧汇总》和《java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
Java基础之反射原理与用法详解