如何在java项目中实现一个反射应用

  介绍

本文章向大家介绍如何在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);//真的是同一阶级对象   ,}      }

类类中相关的几个类

<李>

和成员变量有关领域

如何在java项目中实现一个反射应用