Java中的反射与动态代理

来源:互联网 发布:做淘宝客服基本规则 编辑:程序博客网 时间:2024/06/02 06:23

通过一个字符串,获取这个字符串所代表的那个类的属性/方法等。
拿到字符串,不能new字符串。

拿到构造函数

//personClass是拿到之后的类Constructor constructor=personClass.getConstructor(Long.class,String.class);Person person=(Person) constructor.newInstance(100L,"zhangsan");//私有的构造方法//暴力反射public void getPrivateConstructor() throws Exception{    //一个string类型的构造参数    Constructor con=personClass.getDeclaredConstructor(String.class);    con.setAccessible(true);    Person person2=(Person)con.newInstance("zhangsan");    System.out.println("*"+person2.getName());}

获取非私有成员

Object obj=constructor.newInstance(100L,"zhangsan");Field field=personClass.getField("name");//给具体对象设置field.set(obj,"lisi");

获取非私有成员

Object obj=constructor.newInstance(100L);Field field2=personClass.getDeclaredField("id");field2.setAccessible(true);field2.set(obj,10000L);System.out.println(field2.get(obj));

获取非私有函数

Object obj=constructor.newInstance();//这个对象来实现这个方法。Object object=personClass.getMethod("toString").invoke(obj);//即:Method toStringMethod=personClass.getMethod("tostring");Object object=toStringMethod.invoke(obj);System.out.println(object);

原创粉丝点击