标签: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();
}
}
}
标签:java system 打印 lag win 参数 文件中 ref 形参
原文地址:https://www.cnblogs.com/JasperZhao/p/14888264.html