`
xianzhideng
  • 浏览: 61691 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

整理的java反射工具类

    博客分类:
  • J2SE
阅读更多
import java.lang.reflect.Array;    
import java.lang.reflect.Constructor;    
import java.lang.reflect.Field;    
import java.lang.reflect.Method;    
   
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    构造函数的参数 
     * 如果无构造参数,args 填写为 null
     * @return 新建的实例   
     * @throws Exception   
     */   
    public Object newInstance(String className, Object[] args) throws Exception {    
        Class newoneClass = Class.forName(className);    
   
        if(args == null){
        	return newoneClass.newInstance();
        	 
        }else{
        	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常用工具类

    Java工具类是Java编程中非常重要的组成部分,它们提供了一系列便捷的方法,可以极大地提高开发效率,减少重复代码。这里我们主要探讨的是一个集合了多种常见功能的Java工具类库。 首先,我们要理解Java工具类(Java...

    java常用工具类整理

    "java常用工具类整理"这个主题涵盖了Java开发中常用的工具类,这些类在日常编程中非常实用,能大大提高开发效率。这里我们将深入探讨一些常见的Java工具类,并结合`com-jarvis-base`这个文件名,推测这是一个基础...

    JAVA 私塾笔记整理——反射机制(Reflection)

    Java反射机制是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的灵活性和动态性,尤其是在处理对象、类、接口以及它们之间的关系...

    Java整理的基础工具类项目

    在这个Java整理的基础工具类项目中,我们可以看到作者`chenyongci`为了方便开发,集成了各种实用的工具类。这个项目可能包括了字符串处理、日期时间操作、集合操作、IO流处理等多个方面的内容。 1. **字符串处理**...

    工作5年精心整理_Java常用工具类源码

    "工作5年精心整理_Java常用工具类源码"这个资源集合了作者五年工作经验中的精华,提供了大量实用的工具操作类,覆盖了Java开发中的常见需求。以下是一些关键的知识点: 1. **IO操作**:Java的`java.io`包包含了一...

    自己收集整理的一些常用的工具类

    ReflectUtils 反射工具类,提供一些Java基本的反射功能 RegexUtils 正则表达式工具类,提供一些常用的正则表达式 SDCardUtils SD卡工具箱 Symbols 常用符号 WebViewManager WebView管理器,提供常用设置 原地址:...

    通过java的反射技术获取,某个包路径下的类,并以表格形式打印类的属性注解注释及属性名称等

    Java反射技术是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个技术主要基于Java.lang.reflect包中的类和接口,如Class、Constructor、Method和Field等。...

    这些年整理的一些常用Utils工具类 , 希望对大家开发有所裨益

    这里提到的"这些年整理的一些常用Utils工具类"是一份集合了多种功能的Java工具库,旨在为开发人员提供便利。以下将详细介绍其中可能包含的知识点: 1. **Utils工具类的设计理念**: - 工具类通常设计为静态方法...

    张孝祥整理的JAVA面试题宝典

    4. **多线程**:线程的创建(Thread类与Runnable接口)、同步机制(synchronized关键字、wait/notify、Lock接口)、并发工具类(如Semaphore、CountDownLatch)和线程池。 5. **JVM**:Java虚拟机的工作原理,包括...

    2010整理java面试大全

    7. **反射机制**:Java反射是动态获取类信息并操作对象的关键技术,包括Class类的使用、创建对象、访问私有成员、方法的动态调用等。 8. **设计模式**:单例模式、工厂模式、装饰器模式、代理模式、观察者模式等...

    JAVA核心知识点整理——java自学资料.rar

    7. **反射与注解**:反射机制使得在运行时可以动态地获取类的信息并操作类的对象,而注解提供了元数据的功能,增强了代码的可读性和自解释性。 8. **设计模式**:了解并能应用常见的设计模式,如单例、工厂、观察者...

    java代码整理

    11. **反射**:Java反射机制允许在运行时检查类的信息,如类名、方法名、参数类型等,并能动态创建对象和调用方法。 12. **泛型**:泛型提供了一种在编译时检查类型安全性的方法,同时允许在代码中重复使用相同的...

    java汉化工具hhclass

    - **反射(Reflection)**:在某些情况下,Java汉化可能涉及到动态加载和修改类的本地化属性,这需要用到Java的反射机制。 4. **注意事项**: - 汉化时需确保不改变原文本的含义,同时注意保持代码的可读性和一致...

    Java常用代码整理

    15. **并发工具类**:如CountDownLatch、CyclicBarrier、Semaphore等,这些工具类可以帮助我们更好地管理和控制并发程序。 以上就是“Java常用代码整理”可能涵盖的知识点,这些内容对于深入理解和运用Java编程语言...

    JAVA架构知识库整理 PDF版 查阅方便

    对于并发和多线程,Java提供了丰富的API和工具,如线程池、同步机制(如synchronized关键字和Lock接口)、并发集合类等。这部分内容将帮助你理解和解决多线程环境中的问题,提升程序的执行效率。 在内存管理和性能...

    java笔试试题整理

    7. **反射**:反射机制允许我们在运行时检查和操作类、接口、字段和方法,这对于动态加载类、创建对象以及访问私有成员很有用。 8. **泛型**:泛型提供了一种方式来限制集合中存储的数据类型,增强了代码的安全性和...

    JAVA核心知识点整理.zip

    8. **反射机制**:Java反射机制允许在运行时检查类、接口、字段和方法的信息,甚至可以动态调用方法和访问私有属性。这对于创建灵活和动态的应用程序非常有用。 9. **JVM内存模型**:理解Java虚拟机(JVM)的工作...

    Java程序员高手文章集+(PDF)源码整理

    【Java程序员高手文章集+(PDF)源码整理】这一资源主要针对的是Java编程语言的学习与实践,特别是对于希望成为Java编程高手的程序员。这个压缩包包含了一整套精选的Java技术文章,以及相关的源码整理,是提升Java技能...

    java面试题整理集合

    - **并发工具类**:如CountDownLatch、CyclicBarrier、Semaphore等。 7. **反射** - **Class对象**:获取类的信息,动态创建对象和调用方法。 - **方法反射**:运行时动态调用方法,处理方法的参数和返回值。 -...

    java 知识点整理

    Java知识点整理 Java是一种广泛使用的面向对象的编程语言,它具有丰富的API(应用程序接口)和强大的功能。在Java考试中,掌握以下知识点至关重要: 1. **JAVA SE**(Java标准版)是Java的核心部分,包括基础语法...

Global site tag (gtag.js) - Google Analytics