- 浏览: 543026 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (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 2387Java中一共有四个类加载器,之所以叫类加载器,是程序要用到某 ... -
OSGI环境下配置log4j日志
2009-05-07 14:07 1459log4j相信大家都用过的 ... -
Java虚拟机类装载:原理、实现与应用
2009-05-07 09:50 1541Java虚拟机类装载:原理、实现与应用 By jo ... -
Java程序类加载完全揭密
2009-05-07 09:49 1139Java程序类加载完全揭密 ... -
Java的类装载器(Class Loader)和命名空间(NameSpace)
2009-05-07 09:48 1808Java的类装载器(Class Loader)和命名空间(Na ... -
Java类装载体系中的隔离性
2009-05-07 09:28 1440Java类装载体系中的隔离性 正文 Java中类 ... -
了解 JAVA classloader
2009-05-07 09:21 1125什么是 ClassLoader? ... -
如何实现自己的classloader
2009-05-07 09:12 2076如何实现自己的classloader 如何实现自己的clas ... -
ClassLoader原理
2009-05-07 09:06 1049JVM规范定义了两种类型的类装载器:启动内装载器(bootst ... -
JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecuto
2009-04-03 11:32 1344在多线程大师Doug Lea的 ... -
MD5
2009-03-17 09:17 1035使用 Java 生成 MD5 编码 MD5即 ... -
JAVA字符串处理函数列表一览
2009-03-14 16:48 2054Java中的字符串也是一连串的字符。但是与许多其他的计算机语言 ... -
StringTokenizer(字符串分析解析类型)(转)
2009-03-14 16:35 3155功效:将字符串以定界符为界,分析为一个个的token(可理解为 ... -
JAVA乱码分析
2009-03-14 16:33 2250UNICODE编码,它采用双字 ... -
java.util.UUID
2008-12-19 18:01 4984GUID是一个128位长的数字,一般用16进制表示。算法的核心 ... -
java应用程序中动态生成PDF文件
2008-12-11 17:05 1216很多应用程序要求动态 ... -
JAVA和JAVAC 命令行
2008-12-11 17:03 2621javac和java命令行中的-classpath选项这是个很 ... -
创建java的可执行文件
2008-12-11 16:59 1419Jar工具的作用是java程序中若干文件联合压缩到一个Jar包 ... -
深入对象复制与比较
2008-12-04 10:09 15441.对象的复制2.clone()的使用3.对象实例的比较/// ... -
解析Java对象的equals()和hashCode()的使用
2008-12-04 10:07 884在Java语言中,equals()和h ...
相关推荐
总结,Java反射机制是Java动态性的重要体现,它使代码能够在运行时探索和改变自身的行为。通过熟练掌握反射,开发者可以构建更加灵活和强大的应用程序。然而,也应意识到其潜在的风险和性能影响,合理地在项目中运用...
4. **动态代理**:Java的动态代理机制就是基于反射实现的,可以在运行时动态创建代理类。 ### 反射创建对象 在Java中,`Class`类代表类的运行时信息,通过`Class.forName()`方法可以获取到类的`Class`对象。一旦有...
下面将对这些实例涉及的知识点进行详细解读。 首先,C#作为.NET框架的基础,其语法结构严谨,支持面向对象编程。实例可能涵盖了基本的数据类型(如整型、浮点型、字符串)和控制流程(如条件语句、循环结构),这些...
8. **实例57**:可能关于反射机制。Java反射允许在运行时检查类的信息,创建并调用对象,这对于动态类型的应用和元编程非常有用。 9. **实例93**:可能涉及泛型,这是Java 5引入的一个重要特性,它增强了类型安全,...
以下是对这些实例的详细解读: 1. **基础语法与控制结构**:在这一部分,你可能会遇到关于变量声明、数据类型、运算符、流程控制(如if-else,switch,for,while循环)以及方法的实例。这些例子有助于巩固Java的...
9. **反射机制**:反射是Java的一个强大特性,允许程序在运行时动态地获取类的信息并调用其方法。 10. **泛型**:泛型引入了类型安全,使得在编译时就能检查类型错误,提高了代码的可读性和可维护性。 11. **JVM...
13. **反射与元数据**:探索C#的反射机制,动态操作类型和成员,以及使用Attribute元数据。 14. **异步编程**:使用async/await关键字进行异步操作,提高应用程序的响应速度。 15. **委托与事件**:理解委托和事件...
7. **报告**:设计实例可能还包括一份详细的报告,解释设计步骤、设计决策以及对最终结果的解读。 学习MW6S004的射频功放设计,不仅能够帮助我们理解如何利用ADS进行实际的电路设计,还能深入理解射频功放的物理...
教学流程包括导入新课的小实验、解读学习目标、探究新知等环节,通过实例引导学生主动参与,总结反射的概念,然后逐步揭示反射弧的结构和功能。 在实际教学中,教师应以实际情境为引导,以实验为载体,促进学生深度...
12. **反射机制**:反射允许程序在运行时检查和修改自身的行为,包括获取类信息、创建对象、调用方法等。 13. **泛型**:泛型引入了类型参数,提高了代码的类型安全性和重用性。 14. **注解(Annotation)**:注解是...
7. **实例21:反射机制** 反射允许在运行时动态地获取类的信息并调用其方法。这个实例可能会讲解Class类的使用,以及如何通过反射创建对象和调用私有方法。 8. **实例23:设计模式** 设计模式是软件开发的通用...
在这里,读者将了解反射机制如何让程序在运行时检查或修改其行为;泛型如何使代码更加通用,减少强制类型转换;枚举的使用让代码更加清晰和简洁;注解如何提供一种元数据的形式;多线程编程解决并发问题的奥秘;以及...
以上内容仅是对“类的实例在JVM中的内部表示”这一主题的基本解读,具体博客可能会更深入地讨论JVM内部的实现细节,例如对象头的精确结构、垃圾回收算法、类加载器的实现等。通过阅读`instanceKlass.xls`这个文件,...
8. **反射机制**:在运行时动态获取类的信息和调用方法。 9. **泛型**:类型参数化,用于提高代码的复用性和安全性。 10. **枚举与注解**:枚举类型的使用,注解在元数据中的应用。 11. ** Lambda表达式和函数式...
这些波的存在,为理解热弹性波在非局部多孔介质中的反射机制提供了新的视角。特别地,研究指出,在角频率低于某一截止频率时,纵向波会受到显著的衰减,而剪切波则不受到类似的影响。此外,介质空隙的存在、热效应...
10. **反射机制**:Java的反射API允许程序在运行时动态获取类的信息并操作类的对象,实例可能包含类的加载、方法的调用等。 11. **泛型**:泛型提供了一种在编译时检查类型安全的方法,实例会展示如何使用泛型类、...
在Java中,动态代理是利用反射机制实现的,可以在运行时动态生成代理类和对象。它主要应用于需要控制对象访问、提供额外功能(如日志、权限检查等)的场景中。 在给定文件的内容中,主要涉及到两个关键部分,分别是...