Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性。Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。
写个例子来演示下:
package reflection;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
public class DumpMethods {
public static void main(String args[]) {
String className = "reflection.DumpMethods";
try {
Class c = Class.forName(className);
Class ptypes[] = new Class[2];
ptypes[0] = Class.forName("java.lang.String");
ptypes[1] = Class.forName("java.util.List");
Method m = c.getMethod("func",ptypes);
Object obj = (Object)c.newInstance();
Object arg[] = new Object[2];
arg[0] = new String("Hello world");
List list = new ArrayList();
list.add("val1");
list.add("val2");
arg[1] = list;
Object r = m.invoke(obj, arg);
System.out.println(r.toString());
} catch (Throwable e) {
System.err.println(e);
}
}
public String func(String s, List list){
System.out.println("func invoked");
for(int i=0;i<list.size();i++){
s = s+" "+list.get(i).toString();
}
return s;
}
}
运行结果:
func invoked
Hello world val1 val2
分享到:
相关推荐
适用于有一定Java编程基础的开发人员,希望了解和应用Java反射机制的使用者。 使用场景及目标 使用反射机制的典型场景包括以下几个方面: 在运行时动态加载和创建类对象。 通过反射调用对象的方法和访问对象的字段...
通过java类的路径实例化类并调用方法:仅仅知道类的路径,就可以实例化对象,利用反射机制调用其方法
利用Java的反射与代理实现IOC模式 在Java中,其反射和动态代理机制极其强大,我们可以通过其反 射机制在运行时获取信息。而代理是一种基本的设计模式,它是一种为了提供额外的或不同的操作而插入到真 实对象中的...
reflection是一系列的API,用于表示或者处理当前JVM中的类,接口和对象. java.lang.reflect/java.lang.Class 在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
Struts框架可提高J2EE平台上应用系统的可扩展性和可重用性。但其较为复杂的控制层过多地分散...java反射机制提供了在程序运行时加载和调用类的功能,利用它可简化Struts框架下的逻辑控制。本文在分析了Struts框架工作...
Java反射机制是一个非常强大的功能,在很多大型项目比如Spring, Mybatis都可以看见反射的身影。通过反射机制我们可以在运行期间获取对象的类型信息,利用这一特性我们可以实现工厂模式和代理模式等设计模式,...
反射是指程序在运行时动态获取对象属性与...简单一点说,就是可以通过类名称来创建一个类对象,这在Java和Object-C中是原生支持的,所以实现起来非常简单,但是C++就不支持了,如果想要用到反射机制,那就得自己实现。
在Java中的反射机制,被称为Reflection。(大家看到这个单词,第一个想法应该就是去开发文档中搜一下了。)它允许运行中的Java程序对自身进行检查,并能直接操作程序的内部属性或方法。Reflection机制允许程序在正在...
DumpMethods.java 使用反射机制来获取类中的方法 getClassName.java 利用反射机制获取类的名字 invokeConstructor.java 利用反射机制调用构造器 invokeMethod.java 利用反射机制调用成员方法 listConstructors....
利用Java的反射机制,提供一个根据方法名执行指定方法的方式。
使用的教材是java核心技术卷1,我将跟着这本书的章节同时配合视频资源来进行学习基础java知识。 day034 反射(一)Class类、捕获异常、利用反射分析类的能力 反射库(reflection library)...反射机制的功能极其强大,
先来一些不太实用的解释:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java...
(1)对于可以通过编译的考生程序,利用 Java 反射机制提取考生程序的相 关信息进行黑盒测试,给出测试分,再结合语法分、结果分,计算出总得分。 (2) 对于无法通过编译的考生程序,利用本地 jdk 包中的编译器编译...
java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java....
java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java.nio ...
java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java.nio ...
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。...
反射是一种机制,利用该机制可以在程序运行过程中对类进行解剖并操作类中的所有成员(成员变量,成员方法,构造 方法)。 反射的使用前提: 要获得该类字节码文件对象,就是Class对象 获取Class对象的三种方式: 方式1...
java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java....