Class提供的获取类构造器的方法以及获取类构造器的作用
代码:掌握获取类的构造器,并对其进行操作
Cat类
package com. itheima. day9_reflect ; public class Cat { private String name; private int age; private Cat ( String name, int age) { this . name = name; this . age = age; System . out. println ( "有参数构造器执行了~~" ) ; } private Cat ( ) { System . out. println ( "无参数构造器执行了~~" ) ; } public String getName ( ) { return name; } public void setName ( String name) { this . name = name; } public int getAge ( ) { return age; } public void setAge ( int age) { this . age = age; } @Override public String toString ( ) { return "Cat{" + "name='" + name + '\'' + ", age=" + age + '}' ; }
}
Test2Constructor类(主程序)
package com. itheima. day9_reflect ; import org. junit. Test ; import java. lang. reflect. Constructor ;
public class Test2Constructor { @Test public void testGetConstructors ( ) throws Exception { Class c = Cat . class ; Constructor [ ] constructors = c. getDeclaredConstructors ( ) ; for ( Constructor constructor : constructors) { System . out. println ( constructor. getName ( ) + "====>" + constructor. getParameterCount ( ) ) ; } } @Test public void testGetConstructor ( ) throws Exception { Class c = Cat . class ; Constructor constructor1 = c. getDeclaredConstructor ( ) ; System . out. println ( constructor1. getName ( ) + "====>" + constructor1. getParameterCount ( ) ) ; constructor1. setAccessible ( true ) ; Cat cat = ( Cat ) constructor1. newInstance ( ) ; System . out. println ( cat) ; Constructor constructor2 = c. getDeclaredConstructor ( String . class , int . class ) ; System . out. println ( constructor2. getName ( ) + "====>" + constructor2. getParameterCount ( ) ) ; constructor2. setAccessible ( true ) ; Cat cat2 = ( Cat ) constructor2. newInstance ( "叮当猫" , 3 ) ; System . out. println ( cat2) ; }
}