本来是由于某个问题想用反射来解决,使用前作个小测试(我的应用都是用JDK1.4.2)。然后顺便把1.5的也测了。看到这个数据,不禁想到Hibernate,Spring这类依赖反射的框架是否更加适合运行在JDK1.4平台上。
补:后来在1.6上测了测,性能提高了不少,1.6真的是值得期待
Java 1.5
<!---->Reflection | Normal
3685|210
3696|210
4086|211
3685|211
3775|210
3696|210
Java 1.4.2<!---->
<!---->Reflection | Normal
3295|340
3325|370
3295|340
3315|350
3305|340
3285|330
Java 1.6 beta2
<!---->Reflection | Normal
2954|200
2644|581
3005|170
2944|190
2684|170
3014|191
测试代码
<!----> 1 import java.lang.reflect.*;
2
3 class ReflectTest {
4
5 public static void main(String[] args) {
6 String firstWord = "Hello ";
7 String secondWord = "everybody.";
8
9 for (int i=0; i<100000; i++) {
10 String bothWords = append2(firstWord, secondWord);
11 }
12 for (int i=0; i<100000; i++) {
13 String bothWords = append(firstWord, secondWord);
14 }
15
16 long begin = System.currentTimeMillis();
17 for (int i=0; i<1000000; i++) {
18 String bothWords = append(firstWord, secondWord);
19 }
20 System.out.println("Reflection:" + (System.currentTimeMillis() - begin));
21
22 begin = System.currentTimeMillis();
23 for (int i=0; i<1000000; i++) {
24 String bothWords = append2(firstWord, secondWord);
25 }
26 System.out.println("Normal:" + (System.currentTimeMillis() - begin));
27
28 }
29
30 public static String append(String firstWord, String secondWord) {
31 String result = null;
32 Class c = String.class;
33 Class[] parameterTypes = new Class[] {String.class};
34 Method concatMethod;
35 Object[] arguments = new Object[] {secondWord};
36 try {
37 concatMethod = c.getMethod("concat", parameterTypes);
38 result = (String) concatMethod.invoke(firstWord, arguments);
39 }
40 catch (NoSuchMethodException e) {
41 System.out.println(e);
42 }
43 catch (IllegalAccessException e) {
44 System.out.println(e);
45 }
46 catch (InvocationTargetException e) {
47 System.out.println(e);
48 }
49 return result;
50 }
51
52 public static String append2(String firstWord, String secondWord) {
53 return firstWord.concat(secondWord);
54 }
55 }
分享到:
相关推荐
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有了高度的灵活性,常用于框架开发、插件系统、元编程等...
在给定的代码中,`TestRef` 类展示了如何使用Java反射调用方法。首先,我们创建了一个 `Foo` 类,它有一个私有字符串成员变量 `msg` 和三个方法:`setMsg`、`getMsg` 和 `outInfo`。`main` 方法是演示反射调用的入口...
Java反射机制是Java编程语言中一个强大的特性,它允许程序在运行时动态地访问、检测和修改类、接口、字段和方法等对象。然而,反射操作通常会引入额外的开销,这在性能敏感的应用场景下可能成为一个瓶颈。本文将深入...
以下是一个简单的示例,演示如何使用反射调用静态方法: ```java public class ClsTool { public static void staticMethod(String arg) { System.out.println("调用了静态方法,参数为:" + arg); } } public ...
测试类通常包含一系列的JUnit测试方法,每个方法对应一个或多个功能的测试。它会模拟不同的输入和条件,确保在各种情况下,反射调用工具类都能正确工作。 在Java反射中,以下是一些重要的知识点: 1. **Class对象*...
对于任意一个对象,都能够调用它的任意一个方法和属性。这种动态获取信息以及动态调用对象方法的功能称为Java的反射机制。反射机制为Java的操作带来极大的灵活性,可以用来动态创建对象,调用方法,访问属性。 在...
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个资源“java反射调用实例代码”提供了关于如何使用Java反射API进行各种...
Java动态调用方法是Java反射机制的一个重要应用,它允许我们在程序运行时,根据需要动态地获取类的信息并调用其方法。这种能力为代码的灵活性和可扩展性提供了强大的支持,尤其在处理不确定的对象类型或者需要在运行...
在这个例子中,我们可以看到一个简单的反射机制示例,演示了如何通过字符串指定类名,并调用类的方法。首先,我们定义了一个名为WriteClassName的类,该类有一个静态方法printClassName,该方法打印出一条消息...
这篇博文“关于反射调用方法的一个log”可能涉及了如何利用Java反射API来动态地调用类的方法,这在处理不确定的类结构或者在元编程场景中十分常见。 在Java中,`java.lang.reflect`包提供了反射相关的类和接口,如`...
在这个场景中,我们关注的是如何利用Java反射调用来解析字符串并执行相关函数,最终获取返回值。下面将详细阐述这个过程。 首先,`ReflectUtils.java` 文件可能包含了一些静态方法,这些方法提供了反射操作的便利...
Java反射机制是Java语言提供的一种强大功能,它允许我们在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个机制在处理不确定类型或者需要灵活操作类的场景中非常有用。在这个...
Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射主要用于在运行时分析类、接口、字段和方法的信息,使得我们可以在不知道对象具体...
Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射主要用于在运行时分析类和对象,包括类的方法、字段、构造器等信息。这篇博文将带你...
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java程序具有了高度的灵活性和动态性,尤其在框架开发、插件系统...
Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射机制提供了强大的能力,包括在运行时检查类的结构、创建对象实例、调用方法以及访问和修改字段值。...
Java反射机制是Java编程语言中一个强大的特性,它允许程序在运行时动态地获取类的信息并操作类的对象。这一机制的核心在于,Java程序可以获取到关于任何类的内部信息,包括类名、属性、方法、构造器等,并能在运行时...
- `TestReflect`可能是一个测试类,用于演示如何使用反射获取属性和调用方法。 以上就是反射获取属性和调用方法的基本概念、实现方式以及相关应用场景。掌握反射技术,能让你在编程中更加灵活,解决许多设计难题。
Java反射机制是Java编程语言的一个强大特性,它允许程序在运行时检查自身,并且能够“看”到类的信息(字段、方法等),甚至可以在运行时调用这些方法或修改这些字段的值。这为开发带来了很大的灵活性,同时也增加了...
Java反射机制是Java语言提供的一种强大功能,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在给定的场景中,我们利用反射机制实现了动态调用计算器的加法和减法函数,并修改了学生对象的...