- 浏览: 532392 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (233)
- 设计模式 (1)
- WEBLOGIC (2)
- spring (2)
- struts (1)
- hibernate (8)
- SOA (11)
- j2ee (0)
- corba (0)
- linux (2)
- oracle (0)
- webService (17)
- javaMail (1)
- junit (3)
- java (45)
- 正则表达式 (7)
- java+xml (4)
- html (2)
- javaScript (6)
- ajax (1)
- mysql (0)
- eclipse (2)
- eclipse插件开发 (3)
- 软件工程 (5)
- ant (6)
- 开源包 (6)
- 学习网站 (7)
- Struts2 (18)
- JSP (1)
- 持续集成 (4)
- FreeMaker (6)
- 工作项目点点 (4)
- Maven2 (6)
- JQuery (1)
- 日志记录 (9)
- 工作流 (4)
- BPEL (1)
- extJs (1)
- 组件 (1)
- OSGI (10)
- ESB总线学习 (1)
- 错误解决 (2)
- JMX (3)
- 网络知识 (1)
最新评论
-
duanlongk:
这个问题解决了么?
java.lang.NoClassDefFoundError: org/apache/tuscany -
sotrip:
从上面结果来看,HelloWorld.class是由虚拟机的内 ...
如何实现自己的classloader -
zengsir2008:
哎,不太明白。。。。
OSGI DS 实例 -
ralfsumahe:
...
使用XFire开发Web Service客户端完整入门教程 -
liuqiao_0702:
...
osgi spring hibernate =
package org;
/*
* java的反射在java中是一项很有用的功能,hibernate和spring中都使用了该功能。为了方便大家理解java的反射,下面我写了一个简单的例子,希望对大家的学习有所帮助!
实现反射的类主要包括以下几个:
1、Class 表示一个类的类
2、Field 表示属性的类
3、Method 表示方法的类
4、Constrctor 表示类的构造方法的类
Class类位于java.lang包中,后面三个类都位于java.lang.reflect包中。
*/
/*
* 这是java反射的演示示例,本程序完成的功能是复制一个简单的bean对象。
* 假定bean对象的每个属性都有getXxx()和setXxx()方法。
*/
/*
* Class类是java反射中的核心类,有几个常用方法:
* //1、getName() 以String形式返回类的名称
* //2、getFields()返回所有public类型的属性
* //3、getField(String name)返回指定名称的属性对象
* //4、getDeclaredFields() 以数组形式返回类的所有属性对象
* //5、getMethod(String name, Class[] parameterTypes) 返回指定的方法对象,name表示方法名称,parameterTypes表示参数类型
* //6、getConstructors()获得默认的构造方法
* //7、getConstructor(Class[] parameterTypes)获得特定的构造方法,parameterTypes为构造方法的参数类型
* //获得传入的对象的类型(getClass()方法用于获得对象的类型,它是在Object类中定义的,因此任何对象都可以调用
*/
import java.lang.reflect.*;
public class ReflectTester {
public Object copy(Object object)throws Exception{
Class classType=object.getClass();//与Class.forName(“类名");一样
System.out.println(classType.getName());
//根据传入对象的类型构造一个新的对象
Object objectCopy=classType.newInstance();
//取得传入对象的所有属性
Field fields[]=classType.getDeclaredFields();
//遍历每个属性
for(int i=0;i<fields.length;i++){
//取得一个属性对象
Field field=fields[i];
//取得属性名
String fieldName=field.getName();
//取得属性名称的每一个字母然后转化为大写
String firstChar=fieldName.substring(0,1).toUpperCase();
//构造一个get方法名
String getMethodName="get"+firstChar+fieldName.substring(1);
//构造一个set方法名
String setMethodName="set"+firstChar+fieldName.substring(1);
//根据方法名,分别取得get和set方法
Method getMethod=classType.getMethod(getMethodName, new Class[]{});
Method setMethod=classType.getMethod(setMethodName, new Class[]{field.getType()});
//Method对象的invoke方法,用于动态的执行指定对象的方法。它的第一个参数表示拥有该方法的对象,第二个
//参数表示该方法的参数
//根据传入的对象及其相应的方法对象,就可以调用get方法对象取得相应的属性值了
Object value=getMethod.invoke(object, new Object[]{});
//据新构造的对象,调用set方法对象,就可以为其设置相应的属性值了,
setMethod.invoke(objectCopy, new Object[]{value});
}
return objectCopy;
}
public static void main(String args[]){
//新建一个bean类,
TestBean tb=new TestBean();
tb.setName("梁小江");
tb.setAge(100);
//实例化当前类
ReflectTester rt=new ReflectTester();
try{
//执行copy方法,将新建的Bean类传入
TestBean tbCopy=(TestBean)rt.copy(tb);
//测试返回的类属性是否与原来一致
System.out.println(tbCopy.getName()+"----"+tbCopy.getAge());
}catch(Exception e){
e.printStackTrace();
}
}
}
class TestBean{
private String name;
private int age;
public TestBean(){
}
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;
}
}
/*
* java的反射在java中是一项很有用的功能,hibernate和spring中都使用了该功能。为了方便大家理解java的反射,下面我写了一个简单的例子,希望对大家的学习有所帮助!
实现反射的类主要包括以下几个:
1、Class 表示一个类的类
2、Field 表示属性的类
3、Method 表示方法的类
4、Constrctor 表示类的构造方法的类
Class类位于java.lang包中,后面三个类都位于java.lang.reflect包中。
*/
/*
* 这是java反射的演示示例,本程序完成的功能是复制一个简单的bean对象。
* 假定bean对象的每个属性都有getXxx()和setXxx()方法。
*/
/*
* Class类是java反射中的核心类,有几个常用方法:
* //1、getName() 以String形式返回类的名称
* //2、getFields()返回所有public类型的属性
* //3、getField(String name)返回指定名称的属性对象
* //4、getDeclaredFields() 以数组形式返回类的所有属性对象
* //5、getMethod(String name, Class[] parameterTypes) 返回指定的方法对象,name表示方法名称,parameterTypes表示参数类型
* //6、getConstructors()获得默认的构造方法
* //7、getConstructor(Class[] parameterTypes)获得特定的构造方法,parameterTypes为构造方法的参数类型
* //获得传入的对象的类型(getClass()方法用于获得对象的类型,它是在Object类中定义的,因此任何对象都可以调用
*/
import java.lang.reflect.*;
public class ReflectTester {
public Object copy(Object object)throws Exception{
Class classType=object.getClass();//与Class.forName(“类名");一样
System.out.println(classType.getName());
//根据传入对象的类型构造一个新的对象
Object objectCopy=classType.newInstance();
//取得传入对象的所有属性
Field fields[]=classType.getDeclaredFields();
//遍历每个属性
for(int i=0;i<fields.length;i++){
//取得一个属性对象
Field field=fields[i];
//取得属性名
String fieldName=field.getName();
//取得属性名称的每一个字母然后转化为大写
String firstChar=fieldName.substring(0,1).toUpperCase();
//构造一个get方法名
String getMethodName="get"+firstChar+fieldName.substring(1);
//构造一个set方法名
String setMethodName="set"+firstChar+fieldName.substring(1);
//根据方法名,分别取得get和set方法
Method getMethod=classType.getMethod(getMethodName, new Class[]{});
Method setMethod=classType.getMethod(setMethodName, new Class[]{field.getType()});
//Method对象的invoke方法,用于动态的执行指定对象的方法。它的第一个参数表示拥有该方法的对象,第二个
//参数表示该方法的参数
//根据传入的对象及其相应的方法对象,就可以调用get方法对象取得相应的属性值了
Object value=getMethod.invoke(object, new Object[]{});
//据新构造的对象,调用set方法对象,就可以为其设置相应的属性值了,
setMethod.invoke(objectCopy, new Object[]{value});
}
return objectCopy;
}
public static void main(String args[]){
//新建一个bean类,
TestBean tb=new TestBean();
tb.setName("梁小江");
tb.setAge(100);
//实例化当前类
ReflectTester rt=new ReflectTester();
try{
//执行copy方法,将新建的Bean类传入
TestBean tbCopy=(TestBean)rt.copy(tb);
//测试返回的类属性是否与原来一致
System.out.println(tbCopy.getName()+"----"+tbCopy.getAge());
}catch(Exception e){
e.printStackTrace();
}
}
}
class TestBean{
private String name;
private int age;
public TestBean(){
}
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;
}
}
发表评论
-
类加载机制转载
2009-06-23 09:58 2347Java中一共有四个类加载器,之所以叫类加载器,是程序要用到某 ... -
OSGI环境下配置log4j日志
2009-05-07 14:07 1408log4j相信大家都用过的 ... -
Java虚拟机类装载:原理、实现与应用
2009-05-07 09:50 1499Java虚拟机类装载:原理、实现与应用 By jo ... -
Java程序类加载完全揭密
2009-05-07 09:49 1080Java程序类加载完全揭密 ... -
Java的类装载器(Class Loader)和命名空间(NameSpace)
2009-05-07 09:48 1738Java的类装载器(Class Loader)和命名空间(Na ... -
Java类装载体系中的隔离性
2009-05-07 09:28 1407Java类装载体系中的隔离性 正文 Java中类 ... -
了解 JAVA classloader
2009-05-07 09:21 1072什么是 ClassLoader? ... -
如何实现自己的classloader
2009-05-07 09:12 2027如何实现自己的classloader 如何实现自己的clas ... -
ClassLoader原理
2009-05-07 09:06 1008JVM规范定义了两种类型的类装载器:启动内装载器(bootst ... -
JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecuto
2009-04-03 11:32 1296在多线程大师Doug Lea的 ... -
MD5
2009-03-17 09:17 1008使用 Java 生成 MD5 编码 MD5即 ... -
JAVA字符串处理函数列表一览
2009-03-14 16:48 2016Java中的字符串也是一连串的字符。但是与许多其他的计算机语言 ... -
StringTokenizer(字符串分析解析类型)(转)
2009-03-14 16:35 3117功效:将字符串以定界符为界,分析为一个个的token(可理解为 ... -
JAVA乱码分析
2009-03-14 16:33 2159UNICODE编码,它采用双字 ... -
java.util.UUID
2008-12-19 18:01 4945GUID是一个128位长的数字,一般用16进制表示。算法的核心 ... -
java应用程序中动态生成PDF文件
2008-12-11 17:05 1174很多应用程序要求动态 ... -
JAVA和JAVAC 命令行
2008-12-11 17:03 2587javac和java命令行中的-classpath选项这是个很 ... -
创建java的可执行文件
2008-12-11 16:59 1377Jar工具的作用是java程序中若干文件联合压缩到一个Jar包 ... -
深入对象复制与比较
2008-12-04 10:09 15131.对象的复制2.clone()的使用3.对象实例的比较/// ... -
解析Java对象的equals()和hashCode()的使用
2008-12-04 10:07 852在Java语言中,equals()和h ...
相关推荐
反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc...
Java 反射机制 代码的实例 请认真阅读 运行此代码 只要读懂了 反射机制也就明白了
java的反射机制的应用实例,对反射的机制很好的理解!
实例解读模拟电子技术完全学习与应用
如题,实例解读电子元器件与电路设计,适合基础薄弱的同学学习
反射实例-JAVA反射机制
Java反射机制总结(实例分析) Java反射机制学习笔记
《实例解读模拟电子技术完全学习与应用》,理论与实战相结合,电子技术学习者必看资料
C#反射实例C#反射实例讲解讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解
实例解读西门子PLC.pdf
《实例解读模拟电子技术完全学习与应用》电子书高清pdf下载地址 网盘下载
反射机制反射机制反射机制反射机制反射机制反射机制反射机制反射机制反射机制反射机制反射机制
Java中,反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件 之间进行源代表链接。反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内 部信息,而不是...
JAVA中的反射机制(内含大量实例)JAVA中的反射机制(内含大量实例)JAVA中的反射机制(内含大量实例)
Java 反射机制、Java 的类反射机制、Java 反射机制的学习、Java 反射Reflection--运行时生成实例 java反射机制的手册文档
实例解读模拟电子技术完全学习与应用-PPT课件,基于面包板的,非常实用,值得拥有
《实例解读51单片机完全学习与应用》(作者:杨欣)一书的源程序代码,注释比较齐全,非常适合初学者。该资源来自于这本书的光盘资源。