`

java 反射浅析(一)

    博客分类:
  • java
 
阅读更多
一:关于java反射机制的作用
     判断任意一个对象所属的类
     构造任意一个类的对象
     判断任意一个类所具有的成员变量和方法
     调用任意一个个对象的方法

二:
 利用如下类实现反射机制,
 Class 类:代表一个类
 Field 类:代表类的成员变量
 Method 类:代表类的方法
 Consrructor 类的构造方法
 Array类 提供动态创建数组,以及访问数组元素的静态方法
 Java 中,无论生成某个类的多少个对象。这些对象都会对应于同一个Class对象。

三:实现反射的步骤:
1.获得String类的Class 对象(注意:该对象是类的对象,所以对其String类来说它还是一个类,要想利用String 的方法和属性还必须实例化)Class<?>  classtype = Class.forName(“java.lang.String”)
2.Method []  methods = classtype.getDeclaerMethods()
(该数组中保存了String 类的所以方法)

四:创建一个Test类实例个几种方法:
1. Test tt = new Test() (用new关键字产生)传统方法
2. Calss<?>  classtype = Test.class   :得到该类的一个Class 对象
Object  tt = classtype.new Instance() :得到Test 对象的实例(只能生成无参数的Test对象)
等价于:Constructor cons = classtype.getConstructor(new Class[]{String.class,int.class})
        Object tt = cons.newInstansce(new object[]{}); //返回的也是Test对象


一般访问Test 的add(int x,int y)的方法为:tt.add(3,4)
五:利用反射访问步骤如下:1.首先生成Test 类的Class 对象 假设为:tcalss
2 其次:Method addMethod = tcalss.getMethod(“add”,new Class[]{int.class,int.class})
根据函数名和参数得到你要访问的方法。该语句返回的是一个Method 对象
3.得到该方法后调用inoke函数 传参
addMethod.invoke(Test,new object[]{1,3})

addMethod.invoke(object  obj, object args)
该方法参数说明 :
Obj – the object the underlying method is invoked form
Args – the arguments used for the method call

(假定上面的方法为 public add(itn x,int y))

 得到某个类的Class 对象3种方式:
1. 调用Class 静态方法: Class<?> tt = Class.forName(“java.lang.string”):
2. 使用类的.class 语法: String.class
3. 使用Object 类的getclass方法:String s = “a”, Class <?> s = s.getclass();


六 :用构造函数法生成有参对象
例如 类个构造函数为public Test(int x,int y){}
1. Class<? >  classtype = Test.getclass();
2. Constructor cons = classtype.getConstructor(new Class[]{int.class,int.class})
3. Object obj = cons.newInstance(new Object[]{3,4})
这相当 Test  tt = new Test(3,4);

分享到:
评论

相关推荐

    Java 反射机制浅析

    Java反射机制是Java编程语言中一个强大的特性,它允许程序在运行时动态地获取类的信息并操作类的对象。反射机制的核心在于,它打破了编译时的束缚,使得代码具有更高的灵活性和可扩展性。在Java中,反射主要依赖于`...

    浅析Java 反射机制的用途和缺点

    "浅析Java 反射机制的用途和缺点" Java 反射机制是一种强大的技术,可以让应用程序做一些几乎不可能做到的事情。它可以让程序在运行时检测或修改程序行为,是 Java 语言中一个相对高级的特性。开发者可以使用反射...

    深入浅析Java反射机制

    Java反射机制是Java编程语言中一个强大的工具,它允许程序在运行时动态地获取类的信息并操作类的对象。反射机制的核心在于,它打破了程序编译时的静态性,提供了对类、接口、字段和方法的动态访问能力。通过反射,...

    Java反射机制(Reflection)浅析

    Java反射机制(Reflection)是Java语言提供的一种强大的能力,它允许程序在运行时动态地获取类的信息并操作类的对象。这种机制使得Java具备了高度的灵活性和动态性,尤其是在处理未知类或者需要根据条件动态调用类的...

    浅析Java泛型的使用.pdf

    【Java泛型】Java泛型是自Java SE 1.5版本引入的一种强大的类型系统增强,旨在提升代码的安全性和重用性。它允许我们在编写代码时指定容器(如List、Set、Map等)能存储何种类型的元素,从而避免运行时的类型转换...

    Java基础知识点 - 内容比较全面

    7. **Java中的反射机制**:反射允许程序在运行时检查类、接口、字段和方法的信息,动态创建对象并调用方法。它是Java动态性的重要体现,广泛应用于插件系统、框架和测试工具。 8. **Java中Heap与Stack的区别**:堆...

    java与php的区别浅析

    5、反射概念:Java从第一天开始就在内部具有反射概念,如接口,重复类,抽象类或方法概念。PHP 5.0以前没有任何反射概念,从PHP 5.0开始,它引入了这个功能,但与Java相比并没有那么大的进步。 6、页面加载速度:...

    XML架构浅析.pdf

    在现代编程环境中,如.NET Framework和Java,反射扮演着重要角色。它可以减少开发者必须考虑的问题数量,并且使得创建更高效的工具变得可能。例如,在.NET Framework中,公共语言运行时(CLR)提供了安全、垃圾回收...

    深入浅析Java注解框架

    Java注解框架是Java编程语言中的一个重要特性,它允许开发者在代码中添加元数据,以提供额外的信息,如编译器指令、运行时检查或框架的配置信息。注解的本质是与程序代码关联的特殊标记,它们在编译时或运行时通过...

    Android框架浅析之锁屏(Keyguard)机制原理

    ### Android框架浅析之锁屏(Keyguard)机制原理 #### 一、锁屏界面的组成 锁屏(Keyguard)是Android系统中的一个重要组成部分,它主要用于保护用户的隐私数据不被未授权访问。锁屏功能主要由两个部分组成:解锁...

    JFinal技术架构浅析.doc

    JFinal 是一个基于Java语言的轻量级Web开发框架,其设计目标是简化开发、提高效率,让开发者能够更专注于业务逻辑的实现。本篇文档将对JFinal的技术架构进行浅析,帮助读者理解其核心设计理念和工作原理。 1. **...

    浅析java中 Spring MVC 拦截器作用及其实现

    在Java的Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,它允许开发者在请求处理的前后阶段执行自定义逻辑,比如进行权限检查、日志记录、性能统计等。这篇文章将深入探讨Spring MVC拦截器的作用、实现...

    java中hashcode()和equals()的详解.docx

    在Java编程语言中,`hashCode()`与`equals()`方法是非常重要的概念,它们不仅对于深入理解Java内存管理至关重要,也是实现自定义类的关键部分之一。本文将详细介绍这两个方法的工作原理、使用场景以及在Java集合框架...

    Java动态代理简单应用

    概念  代理模式是基本的设计模式之一,它是开发者为了提供额外的或...  Java动态代理实现机制采用了反射的思想,有关于反射的基础知识,可以参见博客Java发射机制浅析。  原理  Spring核心AOP实现技术之一是采用

    JNI资源汇总

    - **类和结构体**:JNI支持对Java类的反射操作,以及将Java对象映射到C/C++的结构体。 5. **学习资源**: - "Android JNI开发入门与提高":这份文档可能涵盖了JNI的基础知识,如如何创建和调用本地方法,以及进阶...

    浅析道路检测技术的要点及应用.docx

    激光路面平整度仪通过激光反射信号差异判断路面高低,激光弯沉仪则用于评估道路在荷载下的变形。激光技术具有非接触、高速、高精度的优势,但在某些情况下可能无法精确反映路面的轮廓特征。 3. 图像检测 图像检测...

    浅析使用JDBC操作MySQL需要添加Class.forName("com.mysql.jdbc.Driver")

    在Java编程中,JDBC(Java Database Connectivity)是用于与各种数据库进行交互的一组接口和类。当我们使用JDBC操作MySQL数据库时,通常会在代码中看到`Class.forName("com.mysql.jdbc.Driver")`这一行,这行代码的...

Global site tag (gtag.js) - Google Analytics