Class对象的生成方式:
1.Class.forName("包名+类名")
2.类名.class
3.实例对象.getClass()
实体类:
package gll; /** * Created by Administrator on 2015/4/1. */ public class User { private String name; private String age; static { System.out.println("init class by static..."); } { System.out.println("init class by no static..."); } public User() { System.out.println("constructor...."); } public User(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
测试用例:
package gll; import org.junit.Before; import org.junit.Test; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; /** * Created by Administrator on 2015/4/1. */ public class UserReflectTest { private Class<?> classByForName; @Before public void setUp() throws Exception { String classPath = "gll.User"; classByForName = Class.forName(classPath); } @Test public void should_init_class_for_class() throws Exception { Class<?> userClass = User.class; assertThat(classByForName == userClass, is(true)); } @Test public void should_init_class_for_getClass() throws Exception { Class<?> userClass = new User().getClass(); assertThat(classByForName == userClass, is(true)); } }
总结:
加载类的时候初始化静态的方法属性。
new类实例对象的时候初始化非静态方法属性。
因此,三种方式生成Class对象,其实只有一个Class对象。在生成Class对象的时候,首先判断内存中是否已经加载。所以,生成Class对象的过程如下:
当我们编写一个新的java类时,JVM就会编译成class对象,存放在同名的.class文件中。在运行时,当需要生成这个类的对象,JVM就会检查此类是否已经装载内存中。若是没有装载,则把.class文件装入到内存中。若是装载,则根据class文件生成实例对象。
相关推荐
Android平台与Web服务数据交互时运用Java反射机制解析数据的研究 本文研究了Android平台与Web服务数据交互时运用Java反射机制解析数据的技术。Java反射机制是一种在运行状态中动态获取类的信息以及动态调用对象方法...
#### 一、Java反射机制概述 Java反射机制是Java语言的一个重要特性,它允许程序在运行时获取类的信息并操作对象。Java反射机制的主要作用包括:获取类的所有属性和方法、构造动态实例、调用类的方法等。通过反射,...
利用java反射机制读取XML文档,省去了花费很多时间浪费在判断元素名词上面。
### Java反射机制详解 #### 一、什么是Java反射机制? Java反射机制是在运行状态中,对于任意一个类,都...以上是关于Java反射机制的基本概念、用法和示例解析,希望能帮助你更好地理解和应用这一重要的Java特性。
Java反射机制是Java语言的一项重要特性,它使得程序能够在运行时获取和操作类的内部信息。虽然反射提供了强大的功能,但在使用时应谨慎,以免引入不必要的性能损耗或安全风险。对于初学者而言,了解并掌握Java反射...
Java反射机制是一项强大而灵活的功能,它使得Java程序能够在运行时动态地检查和操作类及其成员。在实际开发中,反射机制在框架设计、动态代理、插件化开发、单元测试和配置与注解处理等方面有着广泛的应用。然而,...
Java 反射机制是 Java 语言中的一种强大工具,允许程序在运行时检查和修改对象的行为。下面我们将讨论如何使用 Java 反射机制来打印一个对象的所有属性值。 Java 反射机制的概念 Java 反射机制是指 Java 语言中的...
Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。这种机制使得Java具有高度的灵活性和动态性,可以在编译时未知类的情况下进行类的加载、实例化、方法调用等操作...
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查并操作类、接口、字段和方法的信息,打破了通常编译时静态绑定的限制。通过反射,我们可以动态地创建对象,调用方法,访问和修改字段值,甚至...
Java反射机制是Java编程语言中一个强大的特性,它允许运行时的程序动态地获取类的信息并操作类的对象。在Java中,反射主要涉及到`java.lang.Class`类、`java.lang.reflect`包下的类如`Constructor`、`Method`和`...
Java的反射机制是Java语言提供的一种强大的工具,它允许程序在运行时动态地获取类的信息并操作类的对象。反射机制的核心在于Java中的`java.lang.Class`类,它代表了类加载器加载后的类的元数据,包含了类的结构信息...
Java反射机制是Java语言提供的一种强大功能,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类是`java.lang.Class`,它代表了运行时的类信息。通过Class对象,我们...
### Java的反射机制及其实际应用 #### 一、引言 ...总之,Java反射机制是一项强大的工具,它能够在运行时动态地获取和操作类的信息。然而,应该谨慎使用反射,避免滥用造成不必要的性能损失或安全风险。
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查并操作类、接口、字段和方法等对象。这种能力使得Java代码能够具备动态性,可以在不知道具体类名的情况下实例化对象,调用方法,访问字段,以及...
Java反射机制是Java编程语言中一个强大的工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射主要用于在运行时动态地获取类的信息(如类名、方法名、参数类型等)以及操作类...
本篇将深入解析Java反射机制,并通过具体的代码示例进行讲解。 1. java.lang.Class类: 每个Java类都有一个对应的Class对象,它包含了该类的所有信息。我们可以通过`Class.forName()`方法或对象的`getClass()`方法...
Java的反射机制是Java语言的一...总之,Java反射机制提供了一种强大的工具,使我们能够在运行时检查和操作类和对象,增强了代码的灵活性和可扩展性。然而,由于反射涉及到安全性风险和性能损耗,应谨慎使用,避免滥用。