前言
Constructor 对象,就是字面意思,就是一个构造器对象。可以通过它构建对象。
有构造器就能创建对象。 构造器对象,用来获取当前反射类的构造器。
主要方法:
getDeclaredConstructor
:根据方法签名,获取构造器,可返回 private public 等。getConstructor
: 只能返回 public 的构造器
反射获得 Constractor
这里是创建一个对象,不包括调用。
代码语言:javascript复制public void test() {
Class cls = Class.forName("com.liukai.Person");
//获取指定的对象(公共的)
Constructor constructor = cls.getConstructor();
// 创建一个对象
Object p = constructor.newInstance();
}
再举个例子,通过getDeclaredConstructor
获取指定方法签名的构造器。
方法:Constructor.getDeclaredConstructor()
public void test() {
Class cls = Class.forName("com.liukai.Person");
// Person (String str, int number) 的构造器
Constructor constructor2 = cls.getDeclaredConstructor(String.class, int.class);
// 可以转转
Person o = (Person) constructor2.newInstance("String", 1234);
System.out.println(o.age);
}
还有比如可以使用String的Constructor来构建一个对象。
代码语言:javascript复制String.class.getConstructor(String.class).newInstance("Hello");
总结
通过构造器对象Constructor
,可以更加抽象的实例化对象,不需要明确的指定特定类型进行实例化,这样在底层框架层面就可以更加灵活,String实例化对象的操作中就有大量这样的操作。