• 大小: 9KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-24
  • 语言: Java
  • 标签:

资源简介

Java提供了一套机制来动态执行方法和构造方法,以及数组操作等,这套机制就叫——反射。反射机制是如今很多流行框架的实现基础,其中包括Spring、Hibernate等。原理性的问题不是本文的重点,接下来让我们在实例中学习这套精彩的机制。 1. 得到某个对象的属性 public Object getProperty(Object owner, String fieldName) throws Exception { Class ownerClass = owner.getClass(); Field field = ownerClass.getField(fieldName); Object property = field.get(owner); return property; } Class ownerClass = owner.getClass():得到该对象的Class。 Field field = ownerClass.getField(fieldName):通过Class得到类声明的属性。 Object property = field.get(owner):通过对象得到该属性的实例,如果这个属性是非公有的,这里会报IllegalAccessException。 2. 得到某个类的静态属性 public Object getStaticProperty(String className, String fieldName) throws Exception { Class ownerClass = Class.forName(className); Field field = ownerClass.getField(fieldName); Object property = field.get(ownerClass); return property; } Class ownerClass = Class.forName(className) :首先得到这个类的Class。 Field field = ownerCla

资源截图

代码片段和文件信息

package com.hexiang.reflection;

import java.lang.reflect.Array;        
import java.lang.reflect.Constructor;        
import java.lang.reflect.Field;        
import java.lang.reflect.Method;        
       
       
/**      
 * Java Reflection Cookbook      
 *      
 * @author Michael Lee      
 * @since 2006-8-23      
 * @version 0.1a      
 */       
       
public class Reflection {        
    /**      
     * 得到某个对象的公共属性      
     *      
     * @param owner fieldName      
     * @return 该属性对象      
     * @throws Exception      
     *      
     */       
    public object getProperty(object owner String fieldName) throws Exception {        
        Classject> ownerClass = owner.getClass();        
       
        Field field = ownerClass.getField(fieldName);        
       
        object property = field.get(owner);        
       
        return property;        
    }        
       
    /**      
     * 得到某类的静态公共属性      
     *      
     * @param className   类名      
     * @param fieldName   属性名      
     * @return 该属性对象      
     * @throws Exception      
     */       
    public object getStaticProperty(String className String fieldName)        
            throws Exception {        
        Class ownerClass = Class.forName(className);        
       
        Field field = ownerClass.getField(fieldName);        
       
        object property = field.get(ownerClass);        
       
        return property;        
    }        
       
       
    /**      
     * 执行某对象方法      
     *      
     * @param owner      
     *            对象      
     * @param methodName      
     *            方法名      
     * @param args      
     *            参数      
     * @return 方法返回值      
     * @throws Exception      
     */       
    @SuppressWarnings(“unchecked“)
public object invokeMethod(object owner String methodName object[] args)        
            throws Exception {        
       
        Classject> ownerClass = owner.getClass();        
       
        Class[] argsClass = new Class[args.length];        
       
        for (int i = 0 j = args.length; i < j; i++) {        
            argsClass[i] = args[i].getClass();        
        }        
       
        Method method = ownerClass.getMethod(methodName argsClass);        
       
        return method.invoke(owner args);        
    }        
       
       
      /**      
     * 执行某类的静态方法      
     *      
     * @param className      
     *            类名      
     * @param methodName      
     *            方法名      
     * @param args      
     *            参数数组      
     * @return 执行方法返回的结果      
     * @throws Exception      
     */       
    @SuppressWarnings(“unchecked“)
public object invokeStaticMethod(String className String methodName        
            object[] args) throws Exception {        
        Clas

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      65536  2010-01-07 09:13  Java 反射(Reflection) 经典实用例子\Java 反射(Reflection) 经典实用例子.doc

     文件       5054  2010-01-07 09:12  Java 反射(Reflection) 经典实用例子\Reflection.java

     目录          0  2010-01-07 09:14  Java 反射(Reflection) 经典实用例子

----------- ---------  ---------- -----  ----

                70590                    3


评论

共有 条评论

相关资源