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);
}
}
分享到:
相关推荐
本压缩包中的源代码提供了对反射机制的实践应用,包括内部类、类以及方法的实现。 1. 内部类与反射: 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.lang.Class,它代表了运行时的类信息。通过Class对象,我们...
10. **反射API**:Java反射API允许在运行时检查和操作类、接口、字段和方法,源代码可能包含Class类、Constructor类、Method类等的使用,学习者可以了解如何动态地调用方法或访问属性。 通过深入研究这些源代码,...
Java核心技术源代码是Java开发人员深入理解平台工作原理和实现机制的重要参考资料。这些源代码涵盖了Java的核心组件,包括类库、API以及JVM的关键部分。本篇将详细探讨Java核心技术的各个方面,帮助开发者提升对Java...
11. **反射与注解**:Java反射机制可以动态地获取类信息和调用方法,注解提供元数据,用于编译时和运行时的处理,源代码中可能有相关应用。 12. **泛型**:泛型提供类型安全,防止在集合中插入不兼容的类型,源代码...
11. **反射**:Java的反射机制允许在运行时动态地获取类的信息(如类名、方法名)并调用方法,增加了程序的灵活性。 12. **模块系统(Module System)**:Java 9引入的模块系统有助于大型项目的组织和管理,提高...
Java反射机制允许运行中的程序检查自身,并能直接操作程序的内部属性。这是其他许多编程语言(如Pascal、C或C++)不具备的能力。 **1.1 Reflection的工作机制** 为了展示反射如何工作,我们来看一个简单的例子: ...
李兴华java 反射机制代码........................................................
Java课程设计源代码是学习和理解Java编程语言深入精髓的重要资源。这些源代码实例涵盖了Java的基础到高级特性,为初学者提供了丰富的实践素材,同时也为有一定经验的开发者提供了参考和灵感。下面将详细阐述Java课程...
本资源包含了《Java语言程序设计》一书的源代码,这是一份宝贵的教育资源,可以帮助读者深入理解Java编程的核心概念。 首先,Java是一种面向对象的编程语言,由Sun Microsystems(现已被Oracle收购)于1995年推出。...
综合这些游戏源代码,开发者不仅能巩固Core Java的基本语法,如类、对象、继承、封装等面向对象编程概念,还能提升对高级特性的理解,如异常处理、集合框架、IO流、反射等。同时,这些项目也提供了实践的机会,帮助...
总结来说,Java反射机制是Java语言的一个重要特性,它使得程序能够在运行时动态地获取类的信息并进行操作,提高了代码的通用性和适应性。在实际开发中,反射机制常用于框架设计、插件系统、数据持久化等领域,但同时...
10. 反射API:`java.lang.reflect`包提供了反射机制,允许我们在运行时检查类的信息并动态调用方法。源代码揭示了反射的工作方式,这对于编写动态代码和元编程非常有用。 通过深入研究Java API源代码,开发者不仅...
"java实用代码源代码"这个标题表明我们即将探讨的是实际应用中的Java编程代码,这些代码可能涵盖各种功能和应用场景,旨在提高开发效率和解决具体问题。 在描述中提到的".java"文件是Java源代码文件,它是编写Java...