A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package protect;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class ReflectTest {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                try {
                        @SuppressWarnings("unchecked")
                        Class<Person> clazz=(Class<Person>) Class.forName("protect.Person");
                        Field field=clazz.getDeclaredField("age");
                        field.setAccessible(true);
                        Person p1=clazz.newInstance();
                        field.set(p1, 15);
                        Object obj1=field.get(p1);
                        System.out.println(obj1);
                        Method method=clazz.getMethod("show", null);
                        Constructor<Person> cons=clazz.getConstructor(String.class,int.class);
                        Person p2=cons.newInstance("小明",18);
                       
                        method.invoke(p2, null);
                       
                } catch (ClassNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (NoSuchFieldException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (SecurityException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (InstantiationException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (IllegalAccessException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (NoSuchMethodException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (IllegalArgumentException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (InvocationTargetException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }

        }

}

class Person{
        public String name;
        private int age;
        public Person(String name, int age) {
                super();
                this.name = name;
                this.age = age;
        }
        public void show(){
                System.out.println(name+age);
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马