Java反射示例代码

来源:互联网 发布:连云港核废料 知乎 编辑:程序博客网 时间:2024/04/28 11:08
package reflect;import java.lang.reflect.*;public class myTest {public static void main(String[] args) throws Exception {//通过类名获得classClass<?> c = null;c = Class.forName("reflect.Person");//创建实例Person p = null;p = (Person)c.newInstance();p.say("-------------");//通过方法名、参数类型调用方法        Method method=c.getMethod("say", String.class);        method.invoke(c.newInstance(), "1234567890");                //设置属性值Field field = c.getField("name");Person p1 = (Person)c.newInstance();System.out.println("变更前" + field.get(p1));field.set(p1, "Tom222");System.out.println("变更后" + field.get(p1));//调用get、set方法String paramName = "name";String firstLetter = paramName.substring(0, 1).toUpperCase();Method m = c.getMethod("get" + firstLetter + paramName.substring(1));Person p2 = (Person)c.newInstance();System.out.println(m.invoke(p2));m = c.getMethod("set" + firstLetter + paramName.substring(1), String.class);m.invoke(p2, "TomTom");System.out.println(p2.getName());}}class Person{public String name = "Tom";public Person(){}public Person(String name){this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void say(String a){System.out.println(name + " say " + a);}}

0 0
原创粉丝点击