`
猪↘專屬|华
  • 浏览: 164029 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java反射机制源代码

    博客分类:
  • java
阅读更多

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 {
        Class 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
     */

    
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[i] = args[i].getClass();
        }

        Method method = ownerClass.getMethod(methodName, argsClass);

        
return
 method.invoke(owner, args);
    }


      
/**
     * 
执行某类的静态方法
     *
     * 
@param className
     *            
类名
     * 
@param methodName
     *            
方法名
     * 
@param args
     *            
参数数组
     * 
@return 执行方法返回的结果
     * 
@throws Exception
     */

    
public Object invokeStaticMethod(String className, String methodName,
            Object[] args) 
throws
 Exception {
        Class ownerClass = Class.forName(className);

        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(null
, args);
    }



    
/**
     * 
新建实例
     *
     * 
@param className
     *            
类名
     * 
@param args
     *            
构造函数的参数
     * 
@return 新建的实例
     * 
@throws Exception
     */

    
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[i] = args[i].getClass();
        }

        Constructor cons = newoneClass.getConstructor(argsClass);

        
return
 cons.newInstance(args);

    }


    
    
/**
     * 
是不是某个类的实例
     * 
@param obj 实例
     * 
@param cls 
     * 
@return 如果 obj 是此类的实例,则返回 true
     */

    
public boolean isInstance(Object obj, Class cls) {
        
return
 cls.isInstance(obj);
    }
    
    
/**
     * 
得到数组中的某个元素
     * 
@param array 数组
     * 
@param index 索引
     * 
@return 返回指定数组对象中索引组件的值
     */

    
public Object getByArray(Object array, int index) {
        
return
 Array.get(array,index);
    }
}

分享到:
评论

相关推荐

    java r反射源代码

    本压缩包中的源代码提供了对反射机制的实践应用,包括内部类、类以及方法的实现。 1. 内部类与反射: Java内部类提供了在类内部定义类的能力,这可以用来封装数据或实现特定功能。使用反射处理内部类时,需要注意...

    利用java反射机制的建议计算器源码

    Java反射机制是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的动态性和灵活性。在这个“利用java反射机制的建议计算器源码”中...

    Java反射机制_源代码

    Java反射机制是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的...在"Java反射机制_源代码"中,你将找到关于这些概念的示例和实践代码,帮助你更好地理解和应用Java反射。

    Java反射机制 Java反射机制

    ### Java反射机制详解 #### 一、Java反射机制概述 Java反射机制是Java语言的一个重要特性,它允许程序在运行时获取类的信息并操作对象。Java反射机制的主要作用包括:获取类的所有属性和方法、构造动态实例、调用...

    Java反射笔记源代码

    Java反射机制的核心类库在`java.lang.reflect`包中,主要包括`Class`、`Constructor`、`Method`和`Field`等类。这些类提供了对类和对象内部结构的访问,使得开发者能够在运行时动态地获取类的信息和操控对象。 1. *...

    JAVA反射机制的简单理解

    Java反射机制是Java语言提供的一种强大工具,它允许在程序运行时动态地获取类的信息以及对类的对象进行操作。在Java中,静态编译时类型检查确保了代码的稳定性,但有时我们需要在运行时根据需求动态地创建对象、调用...

    Java反射机制

    ### Java反射机制详解 #### 一、什么是Java的反射机制 Java反射机制是Java语言的一种重要特性,使得Java成为了一种动态性很强的语言。通过反射,可以在程序运行时获取类的信息,包括类名、父类、接口、字段、方法...

    JAVA 反射机制应用

    Java反射机制是Java语言提供的一种强大功能,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类是java.lang.Class,它代表了运行时的类信息。通过Class对象,我们...

    Java自学程序源代码

    10. **反射API**:Java反射API允许在运行时检查和操作类、接口、字段和方法,源代码可能包含Class类、Constructor类、Method类等的使用,学习者可以了解如何动态地调用方法或访问属性。 通过深入研究这些源代码,...

    java核心技术源代码

    Java核心技术源代码是Java开发人员深入理解平台工作原理和实现机制的重要参考资料。这些源代码涵盖了Java的核心组件,包括类库、API以及JVM的关键部分。本篇将详细探讨Java核心技术的各个方面,帮助开发者提升对Java...

    164个完整的Java程序源代码

    11. **反射与注解**:Java反射机制可以动态地获取类信息和调用方法,注解提供元数据,用于编译时和运行时的处理,源代码中可能有相关应用。 12. **泛型**:泛型提供类型安全,防止在集合中插入不兼容的类型,源代码...

    java源代码,java源代码

    11. **反射**:Java的反射机制允许在运行时动态地获取类的信息(如类名、方法名)并调用方法,增加了程序的灵活性。 12. **模块系统(Module System)**:Java 9引入的模块系统有助于大型项目的组织和管理,提高...

    Java中的反射机制

    Java反射机制允许运行中的程序检查自身,并能直接操作程序的内部属性。这是其他许多编程语言(如Pascal、C或C++)不具备的能力。 **1.1 Reflection的工作机制** 为了展示反射如何工作,我们来看一个简单的例子: ...

    java反射机制

    李兴华java 反射机制代码........................................................

    JAVA课程设计源代码

    Java课程设计源代码是学习和理解Java编程语言深入精髓的重要资源。这些源代码实例涵盖了Java的基础到高级特性,为初学者提供了丰富的实践素材,同时也为有一定经验的开发者提供了参考和灵感。下面将详细阐述Java课程...

    Java语言程序设计源代码

    本资源包含了《Java语言程序设计》一书的源代码,这是一份宝贵的教育资源,可以帮助读者深入理解Java编程的核心概念。 首先,Java是一种面向对象的编程语言,由Sun Microsystems(现已被Oracle收购)于1995年推出。...

    几个很不错的Java游戏源代码

    综合这些游戏源代码,开发者不仅能巩固Core Java的基本语法,如类、对象、继承、封装等面向对象编程概念,还能提升对高级特性的理解,如异常处理、集合框架、IO流、反射等。同时,这些项目也提供了实践的机会,帮助...

    java反射机制学习笔记+反射机制实操案例

    总结来说,Java反射机制是Java语言的一个重要特性,它使得程序能够在运行时动态地获取类的信息并进行操作,提高了代码的通用性和适应性。在实际开发中,反射机制常用于框架设计、插件系统、数据持久化等领域,但同时...

    java api源代码

    10. 反射API:`java.lang.reflect`包提供了反射机制,允许我们在运行时检查类的信息并动态调用方法。源代码揭示了反射的工作方式,这对于编写动态代码和元编程非常有用。 通过深入研究Java API源代码,开发者不仅...

    java实用代码源代码

    "java实用代码源代码"这个标题表明我们即将探讨的是实际应用中的Java编程代码,这些代码可能涵盖各种功能和应用场景,旨在提高开发效率和解决具体问题。 在描述中提到的".java"文件是Java源代码文件,它是编写Java...

Global site tag (gtag.js) - Google Analytics