文章标题

来源:互联网 发布:mysql connector java 编辑:程序博客网 时间:2024/05/22 03:38

反射

首先创建一个Person类

package cn.itcast.test09;public class Person {    private String name;    private String id;    public Person(){}    public Person(String name, String id) {        super();        this.name = name;        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }}

  1. 使用反射操作无参构造方法
package cn.itcast.test09;public class TestDemo1 {        public static void main(String[] args) throws Exception {        Class clazz3=Class.forName("cn.itcast.test09.Person");        Person person=(Person) clazz3.newInstance();        person.setName("zhangsan");        System.out.println(person.getName());    }}结果:zhangsan
  1. 使用反射操作有参数的构造方法
package cn.itcast.test09;import java.lang.reflect.Constructor;public class TestDemo1 {        public static void main(String[] args) throws Exception {        Class clazz3=Class.forName("cn.itcast.test09.Person");        Constructor cs = clazz3.getConstructor(String.class,String.class);        Person person = (Person) cs.newInstance("lisi","100");        System.out.println(person.getId()+" " +person.getName());    }}结果:100 lisi
  1. 使用反射操作属性
package cn.itcast.test09;import java.lang.reflect.Constructor;import java.lang.reflect.Field;public class TestDemo1 {        public static void main(String[] args) throws Exception {        Class c2 =  Class.forName("cn.itcast.test09.Person");        Person p11 = (Person) c2.newInstance();        Field f1 = c2.getDeclaredField("name");        f1.setAccessible(true);        f1.set(p11, "zhangsan");        System.out.println(f1.get(p11));    }}结果:zhangsan
  1. 使用反射操作普通方法
package cn.itcast.test09;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;public class TestDemo1 {        public static void main(String[] args) throws Exception {        Class c4=Class.forName("cn.itcast.test09.Person");        Person p4=(Person) c4.newInstance();        Method m1=c4.getDeclaredMethod("setName", String.class);        m1.invoke(p4,"niuqi");        System.out.println(p4.getName());    }}
1 0
原创粉丝点击