Method add=clazz.getMethod("add", new Class[]{Integer.class,Integer.class});
add.invoke(o, new Object[]{new Integer(1),new Integer(1)});
Field i=clazz.getDeclaredField("i");//对私有的处理
i.setAccessible(true);//对私有的处理
i.get(o);
i.set(o, 2);
//Method类的invoke(Object obj,Object args[])方法接收的参数必须为对象,
//如果参数为基本类型数据,必须转换为相应的包装类型的对象。
//invoke()方法的返回值总是对象,
//如果实际被调用的方法的返回类型是基本类型数据,那么invoke()方法会把它转换为相应的包装类型的对象,
class MyClass{
private Integer i = 12;
public static String s = "ss";
private String s1 = "";
private double d = 2.3;
public MyClass() {
}
public MyClass(String s1, Double d) {
this.s1 = s1;
this.d = d;
}
public int add(Integer numberA, Integer numberB) {
return numberA + numberB;
}
public static String addString(String s1, String s2) {
return s2 + "_" + s1;
}
}
public class Test {
public static void main(String args[]) throws ClassNotFoundException, SecurityException, NoSuchFieldException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException{
Class clazz = MyClass.class;
//Class clazz=实例.getClass();
//Class clazz=Class("包名.类名");
//静属性方法
//获得
Field static_s=clazz.getField("s");
Method static_addString=clazz.getMethod("addString", new Class[]{String.class,String.class});
//使用
static_s.set(null, "aa");
static_s.get(null);
static_addString.invoke(null, new Object[]{"wen","zong"});
//////////////////////////////////////////////////////////////////////////////////////////
//普通属性方法
//获得
Field i=clazz.getDeclaredField("i");//对私有的处理
Method add=clazz.getMethod("add", new Class[]{Integer.class,Integer.class});
//生成对象
//Object o=clazz.newInstance();无参数时
Constructor cst=clazz.getConstructor(new Class[]{String.class,Double.class});
Object o =cst.newInstance(new Object[]{"s1",new Double(10)});
//使用
i.setAccessible(true);//对私有的处理
i.get(o);
i.set(o, 2);
add.invoke(o, new Object[]{new Integer(1),new Integer(1)});
/////////////////////////////////////////////////////////////////////////////////////////////
//验证
System.out.println(static_s.get(null));//aa
System.out.println(static_addString.invoke(null, new Object[]{"wen","zong"}));//wen_zong
System.out.println(i.get(o));//2
System.out.println(add.invoke(o, new Object[]{new Integer(1),new Integer(1)}));//2
}
}
相关推荐
一个java普通工程,反射的所有方法和实例都有,,另外还有注释,可以帮助理解
Java反射实例源码,具体讲解内容见博客http://blog.csdn.net/liushuijinger 菜鸟学编程(九)——Java反射机制(一) 菜鸟学编程(十)——Java反射机制(二)
一个java反射的例子,通过java反射机制,动态生成java实例,动态执行方法。例子中有大量注释,简单易懂。
Java 8个反射实例 项目实例 项目工程
java 反射 的 实例介绍 个人笔记
Java反射经典实例 Java反射经典实例 Java反射经典实例 Java反射经典实例
反射入门小程序.通过反射机制执行JavaBean的get和set方法.
Java反射实例,可以给初学反射的同志们一定帮助。一个简单实例,可以更好的理解反射的规矩。
常用的属性,方法和构造函数的获取实例,个人实际学习总结,亲测有效!
很好的几个反射的例子,看后就明白什么是反射了,反射机制怎么用了
反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc...
java反射经典实例 看完之后,基本满足你要做的事情,其中包括修改各种私有属性,调用私有方法的例子代码。简单干练。
NULL 博文链接:https://zyqwst.iteye.com/blog/2255560
这是一本关于Java反射机制论文集合的书。其中包含基本的理论及各种实例。... 关键字有:Java Java反射机制 Java反射 Java反射理论 Java反射实例 Java反射例子 反射原理 反射 网络论文 集合 汇总 总结 Class。
Java 反射机制 代码的实例 请认真阅读 运行此代码 只要读懂了 反射机制也就明白了
代码主要实现了Java反射应用实例, 包含利用反射方法创建对象(使用默认构造函数和自定义构造函数),访问对应对象的方法(包括带参数的和不带参数的),访问对应对象的域(Field). 从这里可以看到代码的详细解说:...