本文章向大家介绍如何在java项目中实现一个反射应用的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
java是什么
java是一门面向对象编程语言,可以编写桌面应用程序,网络应用程序,分布式系统和嵌入式系统应用程序。
创建一个学生类出来。注意类中的成员变量,构造方法,成员方法公共还是私有
package com.reflect; public class  Student { ,//成员变量 ,public String 名称;//公共 ,private int 年龄;//私有 , ,//构造方法 ,public 学生(),{ ,超级(); ,//TODO Auto-generated  constructor 存根 ,} ,//私有构造方法 ,private 学生(String 名称),{=,this.name 名称; ,} , ,public 学生(姓名、String int 年龄),{ ,超级();=,this.name 名称;=,this.age 年龄; ,} ,//成员方法(getXxx/setXxx) ,public String  getName (), { ,return 名称; ,} ,public void  setName (String 名称),{=,this.name 名称; ,} ,public int  getAge (), { ,return 年龄; ,} ,public void  setAge (int 年龄),{=,this.age 年龄; ,} ,//成员方法 ,public void 研究(),{ ,System.out.println(“我爱学习java !“); ,} ,//私有 ,private void 研究(String 字符串),{ ,System.out.println(“我还爱学习“+字符串); ,} ,@Override ,public String  toString (), { ,return “Student  [name=? +, name +,,,,岁=?+,age +,“]”; ,} }
<>强反射概述强>
1,反射:反射是通过类文件对象,去使用文件对象的成员方法,构造方法,成员变量
回想之前我们使用对象方法时必须通过对新象去使用新的学生().study(),此时我们就发现了一个问题,小例中我们肯定是知道学生类中是有研究()方法的,如果我们想使用用这个类但却不清楚类中的信息,此时反射就起到了一定作用。
其实反射的作用,不止这一点点。如下
2,反射可以提高程序的灵活性和扩展性,降低耦合性,提高自适应能力。它允许程序创建和控制任何类的对象,无需提高硬编码目标类
Java反射技术应用领域很广,后期如软件测试,JavaBean等都有很重要的作用
许多流行的开源框架例如Struts,冬眠,春天在实现过程中都采用了该技术
3、性能问题:使用反射基本上是一种解释操作,用于字段和方法接入时要远慢于直接代码。因此Java反射机制只要应用在对;灵活性和扩展性要求很高的系统框架上,普通程序不建议使用使用反射会模糊程序内部逻辑:程序员希望在代码中看到程序的逻辑,反射等绕过了源代码的技术,因而会带来维护问题。
<强>反射获取类类对象强>
- <李>
要想使用反射,我们必须得到类文件对象,也就是我们要使用的类类对象
李> <李>三种获得类文件对象的方法:
李>- <李>
对象类的getClass()方法
李> <李>数据类型的静态属性类
李> <李>类类中的静态方法公共静态类forName(字符串名称)
李>一般我们使用第三种
package com.reflect; public class  Demo { ,public static  void main (String [], args), throws ClassNotFoundException { ,//方式1 ,Student p =, new 学生(); ,Class c =, p.getClass (); ,Student p2 =, new 学生(); ,Class c2 =, p2.getClass (); ,System.out.println (p ==, p2);//,假不是同一学生对象 ,System.out.println (c ==, c2);//,真的是同一阶级对象 ,//方式2所示 ,Class c3 =, Student.class; ,System.out.println (==c c3);//真的是同一阶级对象 ,//方式3所示 ,//ClassNotFoundException(类找不到时) ,Class c4 =, forname (“com.reflect.Student"); ,System.out.println (c ==, c4);//真的是同一阶级对象 ,} }
类类中相关的几个类
- <李>
和成员变量有关领域