欢迎使用CSDN-markdown编辑器

来源:互联网 发布:鹊桥佣金数据哪里查看 编辑:程序博客网 时间:2024/06/16 20:30

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

在Java开发中,难免会遇到使用框架技术,框架技术的底层代码,大量的应用了反射技术,那么,我们可以使用反射技术达到什么样的目的呢?

一个Java类中,必不可少的是构造函数,构造方法和字段.

利用构造函数,我们可以来创建该类的实例;利用构造方法,我们可以调用该类中的功能;利用字段,我们可以修改该类中某个属性的值.

创建反射的对象(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);//设置访问权限为true,破除私有化constructor.setAccessible(true);constructor.newInstance(12);
原创粉丝点击