码迷,mamicode.com
首页 > 编程语言 > 详细

JavaSE:反射机制 - Constructor类

时间:2021-06-16 18:07:42      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:java   system   打印   lag   win   参数   文件中   ref   形参   

反射机制 - Constructor类

1.  基本概念

    java.lang.reflect.Constructor类:主要用于描述获取到的构造方法信息

 

2.  Class类中,与Constructor类有关的常用方法

Constructor getConstructor(Class<?>... parameterTypes) 用于获取此Class对象所表示类型中,参数指定的公共构造方法
Constructor<?>[] getConstructors()  用于获取此Class对象所表示类型中,所有的公共构造方法

 

3.  Constructor类的常用方法

T newInstance(Object... initargs ) 使用此Constructor对象描述的构造方法,来构造Class对象代表类型的新实例
int getModifiers() 获取方法的访问修饰符
String getName() 获取方法的名称
Class<?>[] getParameterTypes() 获取方法所有参数的类型

 

4.  代码示例

//  (假设已存在一个 Person.java 类  )

class PersonConstructorTest {

    main() throws Exception {

      

      //  1.  使用原始方式,以无参形式,构造Person类型的对象,并打印

      Person p1 = new Person();

      print(“无参方式创建的对象是:” + p1);  //  null  0

 

      //  2.  使用反射机制,以无参形式,构造Person类型的对象,并打印

      //  创建对象的类型,可以从键盘输入

      //  print("请输入要创建对象的类型:");

      //  Scanner sc = new Scanner (System.in);

      //  String str1 = sc.next();

      //  Class c1 = Class.forName("com.lagou.task20.Person");

 

      //  创建对象的类型,可以从配置文件中读取

      BufferedReader br = new BufferedReader (new InputStreamReader(new FileInputStream("d:/a.txt ")));

      String str1 = br.readLine();

      Class c1 = Class.forName(str1);

      //  print("无参方式创建的对象是:" + c1.newInstance() );  //  null  0

      //  获取Class对象对应类中的无参构造方法,也就是Person类中的无参构造方法

      Constructor constructor = c1.getConstructor();

      //  使用获取到的无参构造方法,来构造对应类型的对象,也就是Person类型的对象

      print("无参方式创建的对象是:" + constructor.newInstance() );

      //  sc.close();

      br.close();

 

      //  3.使用原始方式,以有参方式,构造Person类型的对象,并打印

      Person p2 = new Person("zhangfei",30);

      print("有参方式构造的对象是:" + p2);   //  zhangfei  30

      

      //  4.使用反射机制,以有参方式,构造Person类型的对象,并打印

      //  获取Class对象对应类中的有参构造方法,也就是Person类中的有参构造方法

      Constructor constructor1 = c1.getConstructor(String.class, int.class);

      //  使用获取到的有参构造方法,来构造对应类型的对象,也就是Person类型的对象

      //  newInstance方法中的实参,是用于给有参构造方法的形参进行初始化的,也就是给name和age进行初始化的

      print("有参构造的对象是:" + constructor1.newInstance("zhangfei",30));  //  zhangfei  30  

 

      //  5.  使用反射机制,获取Person类中,所有的公共构造方法,并打印

      Constructor[] constructors = c1.getConstructors();

      for (Constructor ct: constructors) {

        print("构造方法的访问修饰符是" + ct.getModifiers() );

        print("构造方法的方法名称是" + ct.getName() );

        Class[] parameterTypes = ct.getParameterTypes();

        print("构造方法的所有参数类型是:");

        for (Class cs : parameterTypes) {

          print(cs + " ");

        }

        println();

      } 

    }

}

JavaSE:反射机制 - Constructor类

标签:java   system   打印   lag   win   参数   文件中   ref   形参   

原文地址:https://www.cnblogs.com/JasperZhao/p/14888264.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!