使用反射获取字节码文件中的方法

来源:互联网 发布:文华财经看盘软件 编辑:程序博客网 时间:2024/06/05 10:07
public class ReflectMethod {/** * 方法的反射 * @param args */public static void main(String[] args) throws Exception {String str1="www.baidu.com";System.out.println(str1.charAt(2));//我们平时的时候是使用str1.charAt()去调用的方法,然后获取到第二个字符/** * String str1="aaa"; * String str2="aaaa"; * str1.charAt(); * str2.charAt(); * 我们只是使用某个对象来调用某个方法 * 方法和对象是没有关系的 *   *  调用方法,我们必须通过某个对象去调用.我们得到了某个方法, *  方法和对象是没有关系的。我们要想调用某个对象身上的方法, *  就先得到这个方法,然后针对某个对象,调用这个方法 *///参数需要带要获取的方法的名称Method methodCharAt=String.class.getMethod("charAt", int.class);//将方法作用在某个对象身上System.out.println("值为:"+methodCharAt.invoke(str1, 1));//我们来对这个方法的参数进行改写:  //因为jdk1.4之前没有可变参数,它是通过数组来实现的//new int[]{1,23,44,55};//new String[]{"abc","def","kkk","qq"};//new String[]{new Sring("abd"),new String("def"),new String("kkk"),new String("123")};//new Object[]{new Sring("abd"),new String("def"),new String("kkk"),new String("123")};//new Object[]{new Sring("abd"),1,new String("kkk"),new String("123")};//本来1是不行的。但是jdk1.5之后有自动装箱的功能。//所有的类型都是Object的子类//所以这样就可以了System.out.println(methodCharAt.invoke(str1, new Object[]{5}));// new Object[]{} 这里是代表一个参数都没有 所有的类都是object的子类//new Object[]{2}  这里就是表示有一个//new Object[]{2}  这里就是new一个object的数组,{数组里面的元素列表},2就说明它是object的// 整数类型的object,把它给放到object数组中去了,放的是Integer类型。自动装箱了。这个时候,这个// 数组的长度为1,装了一个integer类型的对象.这个integer的值是2}}


0 0
原创粉丝点击