`

简单的JAVA反射应用

阅读更多

获得某个类的对应的Class对象的方式:

1、使用类的.class语法

2、通过类的对象的getClass()方法

3、通过Class的getSuperclass()方法

4、通过Class对象的forName()方法

5、对于包装类,可以通过.TYPE语法方式

 

例子:

java 代码
  1. package com.test;   
  2.   
  3. public class PrivateTest {   
  4.   
  5.     private String name = "hello";   
  6.     public String getName()   
  7.     {   
  8.         return name;   
  9.     }   
  10.   
  11. }   

 

java 代码
  1. package com.test;   
  2.   
  3. import java.lang.reflect.Field;   
  4.   
  5. //题目:将PrivateTest中的name变量的值改为"world"   
  6. public class ReflectTest {   
  7.   
  8.     public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {   
  9.         PrivateTest pt = new PrivateTest();   
  10.         Class clazz = PrivateTest.class;   
  11.         //得到指定名字的域,用getDeclaredField函数可以得到所有的域,包括private类型的,而getField函数只能获得非private类型的   
  12.         Field field = clazz.getDeclaredField("name");   
  13.         //只有当设置成强制访问后,私有变量的值才会可以被设置   
  14.         field.setAccessible(true);   
  15.         field.set(pt, "world");   
  16.         System.out.println(pt.getName());//world   
  17.     }   
  18.   
  19. }   

 

示例代码:运用Class的getSupperclass()方法获得Class object 

java 代码
  1. package com.test;   
  2.   
  3. import java.awt.Button;   
  4.   
  5. /**  
  6.  * Class的getSuperclass()获得Class object示例  
  7.  * @author yahaitt  
  8.  *  
  9.  */  
  10. public class Test {   
  11.   
  12.     public static void main(String[] args) {   
  13.            
  14.         Button b = new Button();   
  15.         Class<?> clazz_1 = b.getClass();   
  16.         Class<?> clazz_2 = clazz_1.getSuperclass();   
  17.         Class<?> clazz_3 = clazz_2.getSuperclass();   
  18.         Class<?> clazz_4 = clazz_3.getSuperclass();   
  19.            
  20.         //System.out.println(clazz_1);相当于System.out.println(clazz_1.toString());   
  21.         System.out.println(clazz_1);   
  22.         System.out.println(clazz_2);   
  23.         System.out.println(clazz_3);   
  24.         System.out.println(clazz_4);   
  25.     }   
  26.   
  27. }  

运行结果:

class java.awt.Button
class java.awt.Component
class java.lang.Object
null

 

分享到:
评论

相关推荐

    JAVA 反射机制应用

    JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用

    Java反射应用实例

    代码主要实现了Java反射应用实例, 包含利用反射方法创建对象(使用默认构造函数和自定义构造函数),访问对应对象的方法(包括带参数的和不带参数的),访问对应对象的域(Field). 从这里可以看到代码的详细解说:...

    Java反射简单应用

    几个小demo,介绍了反射的几个api操作,最后写了一个简单的Java反射应用:工厂+反射+配置文件。

    Java反射技术的一般应用

    在向学生讲解Class.forName()方法的使用时,有时需要扩展讲解为什么这样书写的原理,于是,扩展讲解Java反射技术可以查看被监视类的方法(构造方法和普通方法)、公有属性的功能,以达到封闭功能的效果。该例子使用...

    JAVA反射机制应用

    描述JAVA反射机制应用、举例。描述反射机制的具体实现及方法实现。

    java反射机制应用

    java反射机制应用,文档中列举了使用java反射机制的各个应用场景,加以代码实例,使用学习非常方便。

    JAVA反射机制及应用例子

    JAVA反射机制及应用例子.。。Reflection API

    java反射机制详解与应用

    java反射机制详解与应用

    java的反射机制及其实际应用

    Java中,反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接。反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内部信息,而不是源...

    java反射应用详细介绍.rar

    java反射应用详细介绍.rar

    Java反射机制经典案例

    Java反射机制经典案例

    java反射机制的原理及在Android下的简单应用

    java反射机制的原理及在Android下的简单应用

    Java方法反射调用demo

    Java反射 调用空参方法 调用Object类型参数的方法 调用基本类型参数的方法 调用基本类型数组参数的方法 调用String数组参数的方法 调用Object数组参数的方法 调用私有方法

    java反射技术源码

    java反射技术应用的很广泛,多看源码,对理解java反射的理解会有很好的认识,这个源码有我自己的理解在里边

    Java反射性能测试分析

    对在Java环境下应用反射的性能,做了测试分析

    java反射知识点

    这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 我的代码里主要有一下知识点: 1.获取Class对象的三种方式 2.获取构造方法并调用 3.获取成员方法 4.获取成员变量 5.反射数组 6.通过反射...

    Java试题-3:反射和泛型的综合应用

    Java试题-3:反射和泛型的综合应用 Java反射 泛型都是比较高级的应用技术

    java中反射的概念

    通过学习后,保证初学者对反射有一个很好的理解,有助于之后对反射的进一步...其中LEAD/LEAD++ 、OpenC++ 、MetaXa和OpenJava等就是基于反射机制的语言。最近,反射机制也被应用到了视窗系统、操作系统和文件系统中。

    Java反射学习和反射的应用场景干货都在这里

    文章目录一、Java反射定义二、Java反射机制实现1、Class对象获取2、获取class对象的摘要信息3、获取class对象的属性、方法、构造函数等三、反射的应用场景1、动态代理2、自定义注解实现日志管理 写在前面:Java反射...

    java反射机制讲解与应用举例

    关于java反射机制的很好的讲解,包括Java的反射机制(Reflection)、Class类、如何获得类的相关信息和运用,并且还有相应的练习,有助于更好地学习java反射机制

Global site tag (gtag.js) - Google Analytics