首页 > 代码库 > java黑魔法-反射机制-02-通过Java反射调用其他类方法
java黑魔法-反射机制-02-通过Java反射调用其他类方法
package com.aaron.reflect; import java.lang.reflect.Method; import java.lang.reflect.InvocationTargetException; /** * Created by IntelliJ IDEA. * File: TestRef.java * User: leizhimin * Date: 2008-1-28 14:48:44 */ public class TestRef { //直接 foo.outInfo(); 也可以调用那个自定义的方法 public static void main(String args[]) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { Foo foo = new Foo("这个一个Foo对象!"); //一个类的真正的对象 Class<?> clazz = foo.getClass(); // ?任意类型= clazz.getDeclaredMethod("outInfo"); //自定义的方法,m1即是方法名 Method m2 = clazz.getDeclaredMethod("setMsg", String.class);//set方法 Method m3 = clazz.getDeclaredMethod("getMsg"); //get方法 //下面的语句输出--------这是测试Java反射的测试类 m1.invoke(foo); //不用print就可以打印消息,而且断点foo是一个确实Foo类的对象 m2.invoke(foo, "重新设置msg信息!"); //不输出 String msg = (String) m3.invoke(foo); System.out.println(msg); //重新设置msg信息! } //方法名.invoke(类的对象); } class Foo { private String msg; public Foo(String msg) { this.msg = msg; } public void setMsg(String msg) { this.msg = msg; } public String getMsg() { return msg; } public void outInfo() { System.out.println("这是测试Java反射的测试类"); } }
package com.aaron.reflect; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class Demo5 { public static void main(String[] args) { Class<?> herosClass = Heros.class; //获得Class类的实例 // new herosClass() 不可以new try { // 断点里面herosClass的值是class com.aaron.reflect.Heros Method m1 = herosClass.getMethod("setName",String.class); Method m2 = herosClass.getMethod("getName"); Method m3 = herosClass.getMethod("say"); // 或者 Object userInfo = herosClass.newInstance() Heros userInfo =(Heros) herosClass.newInstance();//userInfo值并不是以前那些对象值那样 m1.invoke(userInfo,"影魔");//调用了set方法了在这里 System.out.println("调用set方法:"+userInfo);//输出[Heros [name=影魔, type=null,camp=0 ]] System.out.println("调用get方法:"+m2.invoke(userInfo));//调用get方法:影魔 m3.invoke(userInfo); // 可以调用自己的方法 } catch (Exception e) { e.printStackTrace(); } } } package com.aaron.reflect; public class Heros { private String name;//名字 private String type;//类型 private int camp;// public Heros(){} public Heros(String name, String type, int camp) { super(); this.name = name; this.type = type; this.camp = camp; } public void say(){ System.out.println("可以调用自己的方法"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getType() { return type; } public void setType(String type) { this.type = type; } public int getCamp() { return camp; } public void setCamp(int camp) { this.camp = camp; } @Override public String toString() { return "Heros [\n name=" + name + ", \n type=" + type + ", \n camp=" + camp + "\n]"; } }
java黑魔法-反射机制-02-通过Java反射调用其他类方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。