- 浏览: 158894 次
- 性别:
- 来自: 杭州
文章分类
最新评论
案例一:
1. Test.java
2. TestMain.java
案例二:
模仿框架中底层原理
1. ReflectTester.java
1. Test.java
package com.test; public class Test { private String name="hello"; public String getName(){ return name; } }
2. TestMain.java
package com.test; import java.lang.reflect.Field; public class TestMain { public static void main(String[] args) throws Exception { Test test=new Test(); Class clz=Test.class; Field field=clz.getDeclaredField("name"); field.setAccessible(true); field.set(test, "world"); System.out.println(test.getName()); } }
案例二:
模仿框架中底层原理
1. ReflectTester.java
package com.test.reflection; import java.lang.reflect.Field; import java.lang.reflect.Method; public class ReflectTester { public Object copy(Object object) throws Exception { // 获得对象的类型 Class classType = object.getClass(); System.out.println("Class:" + classType.getName()); // 通过默认构造方法创建一个新的对象 Object objectCopy = classType.getConstructor(new Class[] {}) .newInstance(new Object[] {}); // 获得对象的所有属性 Field fields[] = classType.getDeclaredFields(); for (int i = 0; i < fields.length; i++) { Field field = fields[i]; String fieldName = field.getName(); String firstLetter = fieldName.substring(0, 1).toUpperCase(); // 获得和属性对应的getXXX()方法的名字 String getMethodName = "get" + firstLetter + fieldName.substring(1); // 获得和属性对应的setXXX()方法的名字 String setMethodName = "set" + firstLetter + fieldName.substring(1); // 获得和属性对应的getXXX()方法 Method getMethod = classType.getMethod(getMethodName, new Class[] {}); // 获得和属性对应的setXXX()方法 Method setMethod = classType.getMethod(setMethodName, new Class[] { field.getType() }); // 调用原对象的getXXX()方法 Object value = getMethod.invoke(object, new Object[] {}); System.out.println(fieldName + ":" + value); // 调用拷贝对象的setXXX()方法 setMethod.invoke(objectCopy, new Object[] { value }); } return objectCopy; } public static void main(String[] args) throws Exception { Customer customer = new Customer("Tom", 21); customer.setId(new Long(1)); Customer customerCopy = (Customer) new ReflectTester().copy(customer); System.out.println("Copy information:" + customerCopy.getId() + " " + customerCopy.getName() + " " + customerCopy.getAge()); } } class Customer { private Long id; private String name; private int age; public Customer() { } public Customer(String name, int age) { this.name = name; this.age = age; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
发表评论
-
struts2.1改变配置文件默认位置
2011-03-31 14:01 788<filter> <init-par ... -
整合SSH2时需注意几点
2010-12-10 16:35 8501.需要导入struts2-spring-plugin-2.1 ... -
ssh2
2010-11-11 13:56 1857准备条件: 1. 建WEB工程:ssh2 2. 建数据库ssh ... -
spring整合hibernate
2010-11-08 08:59 841准备条件: 1. 创建数据库hibernatespring,表 ... -
代理模式
2010-11-08 08:58 848一. 静态代理 1. Subject.java packa ... -
单例模式
2010-11-08 08:57 6581. Singleton.java package com ... -
spring整合struts2
2010-11-08 08:56 736前言: 1. 创建工程strutsspring 2. 导入st ... -
spring配置文件中集合类型的配置
2010-11-08 08:54 952前言: Spring中对于有些bean会有集合类型的属性,以下 ... -
spring用到的设计模式-工厂模式
2010-11-08 08:53 1252Spring用到的设计模式之一 核心:用到工厂设计模式 1. ... -
读取applicationContext.xml的两种方式
2010-11-08 08:52 957第一种: ClassPathResource cpr=ne ... -
用图形查看spring配置文件依赖关系
2010-11-08 08:51 938myeclipse提供了这样的功能: window->s ... -
spring的基本操作IOC
2010-11-08 08:51 736前言: Spring通过IOC/DI来实现获取对象 准备: 1 ... -
spring的基本操作-反射
2010-11-08 08:50 1110前言: Spring通过反射来实现获取对象 准备: 1. 建S ... -
Struts2整合Hibernate
2010-10-29 19:00 20181. 准备条件: 1.1 在MYSQL中创建hibernate ... -
hibernate级联操作
2010-10-29 18:59 898准备条件: 1. 创建hibernate3工程 2. 导入hi ... -
hibernate基本操作
2010-10-29 18:58 7531.准备条件: 1.1 创建hibernate2工程 1.2 ... -
JDBC
2010-10-29 18:56 768一. JDBC连接Access实例 1. 准备条件 1.1 创 ... -
文件上传
2010-10-26 14:49 6931. upload.jsp <%@ page lan ... -
调用指定Action的方法
2010-10-26 14:48 763主要在配置文件中配置下: 注:如应用于增删改查的类 1. st ... -
I18N
2010-10-26 14:47 811一, 查看当前操作系统中可用的语言 package com ...
相关推荐
这个"Java反射案例"可能包含了以上所述的一些或所有内容,通过实践和学习,你可以更好地理解并掌握Java反射机制,提高代码的灵活性和可扩展性。参考链接提供的文章详细讲解了相关API的使用,是一个不错的学习资源。
在本篇文章中,我们将探讨Java反射的基本概念、如何使用以及其在实际开发中的应用,结合“JAVA简单的反射案例”这一主题。 1. **什么是Java反射**: Java反射机制允许我们在运行时动态地获取类的信息(如类名、...
这个“反射案例-仅供查考”可能包含了一系列关于如何使用反射进行实际操作的例子。 1. **反射的基本概念** - 类的Class对象:每个类在Java中都有一个对应的Class对象,它包含了该类的所有信息,如类名、方法、属性...
这个".NET反射案例"压缩包显然包含了一个视频教程——"shangwu1-反射1.avi",它可能详细讲解了如何在实践中应用反射。 反射的核心概念在于它能够动态地获取类型信息,包括类、接口、枚举、委托等。通过System....
Java反射是Java编程语言中的一个强大特性,它允许运行时的程序访问并操作类、接口、字段和方法等信息,即使这些信息在编译时并未明确知晓。在Java中,反射通常通过`java.lang.Class`类和相关的API来实现。本实例将...
在C#编程语言中,反射是一项强大的特性,它允许运行时检查类型信息并动态操作对象。这个"c# 反射应用几乎最全面的实例"集合可能是为了展示反射的各种应用场景和用法。以下是对C#反射及其应用的详细解释。 反射的...
Java反射机制是Java语言的一个重要特性,它允许程序在运行时动态地获取类的信息并调用其方法。在Java中,反射机制的核心类是`java.lang.Class`,它代表了运行时的类信息。通过反射,我们可以实现一些高级功能,如...
6. **案例分析**: 假设有一个`Person`类,包含`getName()`和`setName(String name)`方法。我们可以不直接创建`Person`对象,而是使用反射动态调用这些方法。首先,获取`Person`的`Class`对象,然后通过`...
//c# 反射实例 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; namespace ConsoleApplication1 { class Program { static void Main( string...
"反射案例"这个文件可能包含了具体的代码示例,演示了如何在C#中使用反射。这些示例可能包括: 1. **获取类型信息**:展示如何获取类型的基本信息,如名称、全名、是否为抽象类等。 2. **动态实例化**:创建未知...
描述中的“简单反射案例”可能包含了上述部分或全部内容,演示了如何在运行时通过类名动态获取类信息,创建对象,访问和修改私有成员,以及调用方法。压缩包中的“test”文件可能是包含这个小例子的源代码文件,可以...
C#反射+委托案例 C#反射是指在运行时动态地获取类型信息和调用类型成员的能力。反射的定义是审查元数据并收集关于它的类型信息的能力。元数据是编译以后最基本的数据单元,它是一个大堆的表,当编译程序集或者模块...
在这个“dwr与反射相结合”的案例中,我们将深入探讨如何利用DWR的灵活性和Java反射机制来增强Web应用的功能。 DWR的核心功能是提供一种安全、高效的方式,使得JavaScript可以调用服务器上的Java方法,就像是本地...
结合这两个概念,"反射工厂"的案例可能是在创建对象时,使用工厂模式的逻辑,但在确定要创建哪个类的对象时,不预先硬编码类名,而是通过反射机制获取。例如,假设我们有一个数据库访问对象的接口DAO,有多个不同的...
通过这个案例,我们可以看到反射机制如何使代码更加通用,可以处理任意实现了相应getter方法的对象,而不仅仅是预先知道的特定类型。 3. 反射与JVM的自省机制: 反射机制是Java虚拟机(JVM)的自省能力体现,它...
再来看"望梅止渴"的例子,这是一个经典的复杂反射案例。吃梅止渴是基本的非条件反射,因为人们在吃到酸梅时会立刻分泌唾液,这是与生俱来的反应。而谈梅止渴、看梅止渴则涉及到更高级的认知过程,如记忆和联想,因此...
8. **缩手反射案例分析**:当手接触到高温物体时,感受器感受到刺激,通过传入神经将信息传至脊髓的神经中枢,再由传出神经引导效应器(肌肉)收缩,使手迅速缩回,这一过程就是典型的反射活动。 综上所述,本课件...
本文将深入讲解C#反射的基本概念、用途以及实际案例。 首先,我们要理解什么是类型。在C#中,每个类、接口、结构、枚举等都是一个类型,它们在编译期间被转换为元数据,存储在程序集(Assembly)中。反射就是通过...
光的反射教学案例.doc