Java反射技术-获取构造函数

来源:互联网 发布:手机可以做淘宝客吗 编辑:程序博客网 时间:2024/05/17 17:58
##Java反射技术-获取构造函数
一般情况下,我们会想,可以直接new对象,为什么需要通过反射机制来调用一个函数中的方法呢?

答案很简单,编写/了解框架.

构造函数在一个类中的作用是提供一种创建对象的方式,下面是简单的使用反射机制来获取类中的构造函数.

###创建反射的对象(Person类)


        public class Person {
            public String person = "superman";
            //无参构造函数
            public Person() {
                System.out.println("我是公共无参构造");
            }
            //有参构造函数
            public Person(String name) {
                System.out.println(person+"----"+name);
            }
            //私有构造函数
            private Person(int num) {
                System.out.println("我是私有有参构造");
            }
        }
### 获取构造函数

获取无参构造函数

        Class clazz = Class.forName("com.itheima.classReflect.Person");
        //获取无参构造方法
        Constructor constructor = clazz.getConstructor();
        
        Person person = (Person) constructor.newInstance();
        System.out.println(person.person);

    * 值得注意的是,Java提供了另一种获取无参构造的方法,所以在书写类时,最好添加上无参构造,方便使用放射机制调用
        Class clazz = Class.forName("com.itheima.classReflect.Person");
        Person person = (Person) clazz.newInstance();

获取有参构造函数

        Class clazz = Class.forName("com.itheima.classReflect.Person");
        //获取有参构造方法public Person(String name)
        Constructor constructor = clazz.getConstructor(String.class);
        Person person = (Person) constructor.newInstance("xxx");

获取私有化有参构造函数

        Class clazz = Class.forName("com.itheima.classReflect.Person");
        //使用getDeclaredConstructor获取在Person类中声明构造方法
        Constructor constructor = clazz.getDeclaredConstructor(int.class);
        //暴力破解私有构造
        constructor.setAccessible(true);
        constructor.newInstance(12);
阅读全文
0 0
原创粉丝点击