import java.lang.reflect.Method;
public class ReflectTest {
String name;
int age;
public static void main(String args[]) throws Exception {
Object o2 = javaCreate();
ReflectTest my = new ReflectTest();
long a = System.currentTimeMillis();
long b = System.currentTimeMillis();
a = System.currentTimeMillis();
for (int i = 0; i < 5000; i++) {
javaCreate();
}
b = System.currentTimeMillis();
System.out.println("javaCreate : " + (b - a));
a = System.currentTimeMillis();
for (int i = 0; i < 5000; i++) {
manualCreate();
}
b = System.currentTimeMillis();
System.out.println("manualCreate : " + (b - a));
a = System.currentTimeMillis();
for (int i = 0; i < 5000; i++) {
javaSet(o2);
}
b = System.currentTimeMillis();
System.out.println("javaSet : " + (b - a));
a = System.currentTimeMillis();
for (int i = 0; i < 5000; i++) {
manualSet(my);
}
b = System.currentTimeMillis();
System.out.println("manualSet : " + (b - a));
a = System.currentTimeMillis();
for (int i = 0; i < 5000; i++) {
javaGet(o2);
}
b = System.currentTimeMillis();
System.out.println("javaGet : " + (b - a));
a = System.currentTimeMillis();
for (int i = 0; i < 5000; i++) {
manualGet(my);
}
b = System.currentTimeMillis();
System.out.println("manualGet : " + (b - a));
}
// ===============下面是 java自身的直接反射的方法
public static Object javaCreate() throws Exception {
Object ob = ReflectTest.class.newInstance();
return ob;
}
public static void javaSet(Object ob) throws Exception {
Method m = ReflectTest.class.getDeclaredMethod("setName",
new Class[] { String.class });
m.invoke(ob, new Object[] { "旺旺旺" });
}
public static void javaGet(Object ob) throws Exception {
Method m = ReflectTest.class.getDeclaredMethod("getName", new Class[0]);
m.invoke(ob, new Object[0]);
}
// ===============下面是 手动的创建对象
public static ReflectTest manualCreate() {
ReflectTest my = new ReflectTest();
return my;
}
public static void manualSet(ReflectTest my) {
my.setName("旺旺旺");
}
public static void manualGet(ReflectTest my) {
my.getName();
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
相关推荐
### Java反射原理详解 #### 一、Java反射机制概述 Java反射机制是Java语言的关键特性之一,赋予了Java一定程度上的动态性。通过反射,程序可以在运行时获取任意一个已知名称类的内部信息,包括其修饰符(如public,...
Java反射机制是Java语言的一种强大的特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射主要涉及到`java.lang.Class`类、`java.lang.reflect`包中的类(如Constructor、Method、Field)以及...
以下是对Java反射原理的详细解析: 一、Java反射的基本概念 1. 类加载:当Java虚拟机(JVM)加载一个类时,会为该类创建一个`Class`对象。这个过程就是类加载,可以通过`Class.forName()`或`ClassLoader.loadClass...
java反射原理
理解Java反射原理对于深入学习和使用SSH框架至关重要。 首先,我们需要了解Java虚拟机(JVM)的运行时数据区,特别是方法区。方法区存储了加载的类的类型信息,包括类的全限定名、超类信息、是否为接口、访问修饰符...
以下是对这个“最简单Java反射原理示例”的详细解释。 一、Java反射的概念 Java反射机制允许我们在运行时动态地获取类的信息(如类名、方法名、参数类型等)并调用这些方法。这是通过`java.lang.Class`类和相关API...
Java反射原理是Java编程语言中的一个重要特性,它允许程序在运行时检查和操作类、对象、接口等的内部结构和行为。这一特性使得Java具备了动态性,可以在运行时动态发现和调用类的方法、创建对象、访问和修改属性。 ...
根据提供的文件信息,我们可以深入探讨Java反射机制的基本原理及其应用场景。 ### Java反射机制的基本概念 Java反射机制允许程序在运行时获取类的信息,并且能够直接操作这些信息。这包括类名、方法名称、参数类型...
Java反射机制是Java语言提供的一种强大的工具,允许程序在运行时检查类、接口、字段和方法的信息,并能动态地调用方法或访问和修改字段值。利用反射,我们可以在运行时才知道要创建哪个类的对象,从而极大地提高了...
面试中,面试官询问Java反射原理,通常是为了了解候选人的编程灵活性和对Java深层面的理解。 首先,Java反射机制的核心在于`Class`类。每个Java类在运行时都有一个对应的`Class`对象,它存储了类的所有信息,如类名...
Java反射原理是Java语言提供的一种能够在运行时检查类、接口、字段和方法的能力。通过反射,我们可以动态地创建对象、访问私有成员、调用方法,甚至改变对象的状态。在Java中,`java.lang.Class`类是反射的核心,它...
反射(Reflection)是Java提供的一个强大功能,允许程序在运行时检查和操作类、接口、字段以及方法等对象。它允许我们获取类的信息(如类名、属性、方法),创建对象,调用方法,甚至修改私有成员变量的值。反射是...
### Java反射原理概览 Java反射是Java语言的一个重要特性,它允许运行时检查和操作类、构造函数、字段和方法。Java反射主要由四个核心组件构成:`Class`、`Constructor`、`Field`和`Method`。通过这些组件,开发...
6. **JAVA反射原理分析** Java反射机制基于`Class`文件结构和JVM的类加载机制。`Class`文件包含了类的元数据,而JVM在加载类时会解析这些元数据,并通过反射API提供访问。 7. **JAVA反射的应用** 反射在许多场景...
#### 四、Java反射原理分析 1. **Class文件结构**:每个编译后的Java类都会生成一个`.class`文件,包含了类的各种信息,如常量池、字段表、方法表等。 2. **JVM加载类对象**:当JVM加载一个类时,会创建一个`Class`...
Java反射是Java编程语言中的一个强大特性,它允许我们在运行时检查类、接口、字段和方法的信息,并且能够在运行时创建和操作对象。...理解并掌握反射原理,对于编写灵活、强大的Java应用程序至关重要。