首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java 反照实例demo1

2012-08-26 
java 反射实例demo1package com.reflection.demosimport java.lang.reflect.InvocationTargetExceptioni

java 反射实例demo1

package com.reflection.demos;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Admin {
public Admin(){
?
}
private String id="";
public String getId() {
?return id;
}
public void setId(String id) {
?this.id = id;
}
public static void main(String[] args) throws ClassNotFoundException, InstantiationException,
IllegalAccessException, SecurityException, NoSuchMethodException,
IllegalArgumentException, InvocationTargetException{
?String str="com.reflection.demos.Admin";//指定类所在的路径
?Class c=Class.forName(str);//Class类的实例表示java应用程序运行时中的类和接口,是java中充当MetaData的描述类
?Object obj=c.newInstance();//创建此Class类实例化对象
?/*//获得指定的方法,传入方法实参打印出来。这里没有直接声明Admin类也没有实例化类,利用顶层的Class
?? //及Method类实现了 运行时,根据传来的字符串动态实例化具体对象并可以调用对象的所有方法及属性。实现了反射*/
?Method m=c.getMethod("setId",new Class[]{Class.forName("java.lang.String")});
?/*//Class类描述了各种数据类型的描述,每种数据类型通过forName()
?//方法传入字符串(类的命名空间)找到具体哪个数据类型的元数据描述类*/
?m.invoke(obj, new Object[]{"zhaiyuehahah"});//前一个obj参数表示 顶层的Object参数,后一个{}中的参数表示实际传入的参数。
?m=c.getMethod("getId",new Class[]{});
?System.out.println(m.invoke(obj, new Object[]{}));
}
}

热点排行