- 浏览: 754407 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (241)
- 个人思考 (1)
- 数据库 (5)
- java基础 (32)
- 软件工程 (2)
- zk开源框架 (15)
- 设计模式 (25)
- javascript (12)
- css (9)
- UML (2)
- CMMI软件需求 (3)
- CMMI软件设计 (2)
- CMMI软件实现 (1)
- CMMI软件测试 (1)
- 正则表达式 (4)
- 系统日志配置 (4)
- 应用服务器 (1)
- spring (7)
- XML (6)
- java web (10)
- Ajax (3)
- RichFaces (14)
- 问题 (1)
- 评论文章 (2)
- fushioncharts (2)
- MAVN (4)
- jquery (26)
- Ext js学习 (2)
- 学习心得 (2)
- CSS兼容问题 (3)
- XSL-FOP (1)
- Quartz (0)
- OSGI (1)
- spring--security (6)
- apache tools (1)
- eclispe 小技巧 (2)
- Ant (1)
- 杂记 (1)
- spring3系列 (5)
- java cache (4)
- EffectiveJava (2)
- 代码重构 (0)
最新评论
-
psz6696:
可以说是超级简单的Demo了,可惜没有演示设值注入和构造注入两 ...
模拟spring中的ClassPathXmlApplicationContext类的实现 -
ziyourJava:
[flash=200,200][img][url][list] ...
spring security进级篇 V 自定义标签控制显示 -
ztw1122:
...
zk组件开发指南(目录) -
zjysuv:
容我说一句 在座的各位都是垃圾 spring 3.2以后的@C ...
三. spring mvc 异常统一处理 -
chengwu1201:
二 基于Spring的异常体系处理
Java反射机制是利用元类(相似于元数据的概念,元数据是指描述数据的数据,元类指的是描述类的类)来创建被描述的类的实例,访问该类的一些信息比如构造器、属性、方法等。它是java语言在运行时拥有一项自观的能力。通过这种能力可以彻底的了解自身的情况为下一步的动作做准备。
Java的反射机制的实现要借助于4个类:Class,Constructor,Field,Method;其中class代表的时类对象,Constructor-类的构造器对象,Field-类的属性对象,Method-类的方法对象。
Class主要有三种方法获得:
一、通过Class类的静态方法forName获取。Class cla = Class.forName("java.lang.String");
二、通过Type或class属性获得。Class cla = String.class;Class cla1 = int.Type;
三、通过实例变量的getClass方法获得。String s = ""; Class cla = s.getClass9();如上所示实例对象cla就是对String类型的描述,通过它我们就可以创建一个String实例,并调用其中的方法。
1、通过对象获取类的完整名字、方法
public class Person{ private String name; private int age; public void setName(String name){ this.name = name; } public void setAge(int age){ this.age = age; } public String getName(){ return this.name; } public int getAge(){ return this.age; } } public class Demo01{ public static void main(String args[]){ Person p = new Person(); //假设现在不知道p是那个类的对象,则可以通过反射机制找到 Class c = null; c = p.getClass(); // 类名 System.out.println(c.getName()); //方法名 Method m[] = c.getMethods(); for(int i=0;i<m.length;i++){ System.out.println(m); } }
2、研究Class类
Class类的构造方法被私有化了,外部无法直接看见,所以其内部必然有一个方法可以取得Class 实例。
public static Class<?> forName(String className) throws ClassNotFoundException
此方法可以返回Class类的实例,此方法接收一个完整的包.类名称。
通过newInstance方法,可以将传入的完整的字符串(包.类名称)实例化。
package org.michael;
import java.lang.reflect.*;
class Person{
private String name;
private int age;
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
public class Demo03{
public static void main(String args[]){
Person p = null;
Class c = null;
try{
c = Class.forName("org.michael.Person");
}catch (Exception e){}
try{
p = (Person)c.newInstance();
}catch (Exception e){}
//上面两行代码也可以使用下面一行代码取代哈~
// p = (Person)Class.forName("org.michael.Person").newInstance();
p.setName("Michael");
p.setAge(30);
System.out.println(p.getName()+"--->"+p.getAge());
}
}
如果要使用以上的代码去实例化一个对象,则必须有一个前题条件:在对象所在的类中必须有一个无参构造方法,如果没有此无参构造,则肯定会出现错误。
在此时如果想继续通过此操作为对象进行实例化,则可以通过构造方法类(Constructor)完成。
package org.michael;
import java.lang.reflect.*;
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
public class Demo05{
public static void main(String args[]){
Person p = null;
Class c = null;
try{
c = Class.forName("org.michael.Person");
Constructor[] cs = c.getConstructors();
Object obj[] = new Object[]{"Michael",30};
//一个类中会有多个构造方法,所以此时返回一个数组
p = (Person)cs[0].newInstance(obj);
}catch (Exception e){
System.out.println(e);
}
System.out.println(p.getName()+"--->"+p.getAge());
}
}
发表评论
-
Java transient关键字
2013-07-01 14:11 1226Java的serialization提供了一种持久化对象实例 ... -
java中的equals()和hashCode()详解
2013-06-23 17:21 1237java中对equals()和hashCode ... -
Java中synchronized 关键字的详解
2013-06-25 12:18 1710在了解cache的过程中,难免会涉及多线程的问题,涉及 ... -
PDF 报表合并
2012-08-14 15:34 1182import java.io.FileOutputStream ... -
java中 set,list,array(集合与数组)相互转换
2011-02-25 17:22 1850public static Object[] List2Arr ... -
互斥访问,限制最大数访问
2010-10-26 18:01 1392/** * @author jgao1 * 用法:P ... -
java中文件操作(递归删除空文件夹,删除过期文件)
2010-09-19 00:23 6368对文件的操作,大家都可能会写一些操作,其实Apache中Fil ... -
java IO类操作
2009-10-24 20:02 1686java的IO类操作主要包括如下几类 1、File类的使用 ... -
java中集合排序问题
2009-10-16 09:59 1676关键字: 集合排序 集合 排序 Iterator ... -
java中已知字体和字体大小确定字体的高度和长度
2009-09-21 17:27 4546public static void main(String ... -
java中路径处理分割
2009-09-12 16:30 5706在Java中处理一些路径相关的问题的时候,如要取出ie浏览器上 ... -
文件中的流
2009-09-07 21:08 14481、base64inputStram public clas ... -
一个javaBean的操作类,主要用于复制bean
2009-08-20 17:53 2732今天用到Bean的复制..恰好有空,写了这个Bean操作类.. ... -
classUtils
2009-08-09 22:55 2025import java.io.File; import ja ... -
java多线程
2009-07-09 21:43 2199java多线程是java基础中的重点,下面就j ... -
java的类集详解
2009-07-05 20:20 2101在学习类集之前,先明确一个概念,那就是啥叫重量级, ... -
抽象类和接口
2009-06-28 15:57 1792今天复习下抽象类和接口。做点重要的笔记 1、抽象 ... -
java中的clone机制及序列化
2009-06-25 22:50 1535在实际编程过程中,我们常常要遇到这种情况:有一个对象A ... -
java字符串的各种编码转换
2009-06-25 21:22 1295import java.io.UnsupportedEncod ... -
对于Java序列化的一次认识 转javaeye(感觉不错)
2009-06-21 22:21 1688其实这个问题简单思考一下就可以搞清楚,方法是不带状态的, ...
相关推荐
java反射机制java反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...
java 反射机制深入理解,java 反射机制深入理解,java 反射机制深入理解,
java反射机制和动态代理的原理,熟悉反射机制和动态代理
Java 反射机制 代码的实例 请认真阅读 运行此代码 只要读懂了 反射机制也就明白了
Java反射机制的实现_Reflection,适合学习了解反射机制。
一个例子8个demo让你了解Java反射机制
java反射机制的一些源代码,我学习的笔记,需要的可以下载看看
描述JAVA反射机制应用、举例。描述反射机制的具体实现及方法实现。
Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制
java反射机制核心代码,小弟一直弄不明白,怎么通过反射来调用私有成员方法,看了这个后,你可以随心调用private方法,和属性,记得添加setAccessable(true),哦,要不还是不行,如:method.setAccessable(true);
JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用
Java反射机制总结(实例分析) Java反射机制学习笔记
候捷谈Java反射机制 有助深入理解Java新特性
深入了解java反射机制的原理,通过反射机制可以破坏单例模式,如何防止通过反射机制拿到单例模式的构造器呢?用枚举类可破
java反射机制,代码/..安逸.不要错过
自己总结的java反射机制的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。适合java的爱好者和学习者
java反射机制原理和反射机制总结!!! java反射机制原理和反射机制总结!!!
java反射机制的实战练习
反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc...
java反射机制源码java反射机制源码java反射机制源码