`
pengcqu
  • 浏览: 771106 次
  • 性别: Icon_minigender_1
  • 来自: 未来
社区版块
存档分类
最新评论

Java中的反射机制

阅读更多

★  Java知识点汇总 

全球软件项目外包平台 兼职做外包 挣Money!

1)概念:
是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。


2)功能:
     在运行时判断任意一个对象所属的类;
     在运行时构造任意一个类的对象;
     在运行时判断任意一个类所具有的成员变量和方法;
     在运行时调用任意一个对象的方法;

     生成动态代理。


3)获得某个对象的具体属性:
Class ownerClass = owner.getClass():得到对象owner的Class。
Field field = ownerClass.getField(fieldName):通过Class得到类声明的属性。
Object property = field.get(owner):通过对象得到该属性的实例,如果这个属性是非公有的,这里会报IllegalAccessException。如果需要访问到对象的private属性,需要首先调用:AccesibleObject.setAccessible(Field名字,true);
如果说是获取Class的静态属性:则第三句换成Object property=field.get(Class名字),而不是用实例的名字。


4)执行某个对象的方法:
public Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception {
     Class ownerClass = owner.getClass();
     Class[] argsClass = new Class[args.length]; 
     for (int i = 0, j = args.length; i < j; i++) {
          argsClass = args.getClass();
      }
      Method method = ownerClass.getMethod(methodName, argsClass);
      return method.invoke(owner, args);
}
如果是执行某个类的静态方法:method.invoke(null, args);


5)新建某对象的实例:
public Object newInstance(String className, Object[] args) throws Exception {
     Class newoneClass = Class.forName(className); 
     Class[] argsClass = new Class[args.length];  
     for (int i = 0, j = args.length; i < j; i++) {
           argsClass = args.getClass();
     }
     Constructor cons = newoneClass.getConstructor(argsClass);
     return cons.newInstance(args);
 }
这里说的方法是执行带参数的构造函数来新建实例的方法。如果不需要参数,可以直接使用newoneClass.newInstance()来实现。


6)判断是否为某个class的实例:
public boolean isInstance(Object obj, Class cls) {
     return cls.isInstance(obj);
}


7)Reflection与introspection
Reflection这个字的意思是“反射、映象、倒影”,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods1。
这种“看透class”的能力(the ability of the program to examine itself)被称为introspection(内省、内观、反省)。Reflection和introspection是常被并提的两个术语。

 

 

 

 

相关链接:

★  Java基础知识点汇总 

★ 【下载】经典常用算法 Java和C语言两种实现(含代码图例)

【下载】Java各种排序算法实现(含代码)

3
1
分享到:
评论

相关推荐

    java反射机制.zip

    java反射机制java反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...

    Java反射机制 Java反射机制

    Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制

    JAVA 反射机制应用

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

    java 反射机制例子

    讲解了JAVA中反射机制,包含例子,代码!对初学者很有用

    详解java中反射机制(含数组参数)

    主要介绍了详解java中反射机制(含数组参数)的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下

    JAVA的反射机制与动态代理

    JAVA的反射机制与动态代理

    Java反射机制课件ppt

    Java反射机制Java反射机制Java反射机制Java反射机制

    java反射机制详解

    java反射机制的详细描述

    java反射机制原理和反射机制总结

    java反射机制原理和反射机制总结!!! java反射机制原理和反射机制总结!!!

    java反射机制源码

    java反射机制源码java反射机制源码java反射机制源码

    Java 1.5 反射机制

    Java反射机制是1.5新增的功能,希望大家能学习愉快!

    反射实例-JAVA反射机制.doc

    反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc...

    Java反射机制总结

    这是一本关于Java反射机制论文集合的书。其中包含基本的理论及各种实例。 所有文章均从网络途径获得,本人只作收集整理的工作,个别地方有改动。每篇文章的标题遵循原作者的表述,本人不再作任何更改。 关键字有:...

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

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

    Reflection_in_Java.zip_in_java 反射_java 反射机制_java反射_反射机制

    Reflection in Java. 介绍Java中的反射机制,候捷谈Java反射机制

    java 反射机制详解

    比较详细讲述了java的反射机制,收获颇丰。希望大家能够共同学习,一起进步。

    JAVA反射机制应用

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

    java 反射机制

    java 反射机制深入理解,java 反射机制深入理解,java 反射机制深入理解,

Global site tag (gtag.js) - Google Analytics