目录
二、 构造器获取
1. getConstructor(Class parameterTypes……)【public】
代码:
!!!无论是protected还是private都会报错,getConstructor()方法只获取public的构造方法
2. getConstructors()方法【public】
代码:
!!依然只能public
3. getDeclaredConstructor()方法【public/protected/private/..】
代码:
!!可以显示protected和private的构造方法啦~耶
4. getDeclaredConstructors() 【public/protected/private/..】
代码:
!!又可以显示protected和private的构造方法啦~耶
二、 构造器获取
1. getConstructor(Class parameterTypes……)【public】
代码:
public class Person {
public Person() {}
public Person(String name) {}
public Person(String name, int age) {}
protected Person(boolean sex) {}
private Person(Date birthday) {}
}
package people.constructor;
import java.lang.reflect.Constructor;
import java.util.Date;
public class Bootstrap2 {
public static void main(String[] args) throws SecurityException, NoSuchMethodException{
Class clazz = Person.class;
Constructor constructor1 = clazz.getConstructor();
System.out.println(constructor1.toString());
Constructor constructor2 = clazz.getConstructor(String.class);
System.out.println(constructor2.toString());
Constructor constructor3 = clazz.getConstructor(String.class,int.class);
System.out.println(constructor3.toString());
Constructor consturctor4 = clazz.getConstructor(boolean.class); //测试protected权限
//Constructor consturctor5 = clazz.getConstructor(Date.class); //测试private权限
}
}
public people.constructor.Person()
public people.constructor.Person(java.lang.String)
public people.constructor.Person(java.lang.String,int)
Exception in thread "main" java.lang.NoSuchMethodException: people.constructor.Person.(boolean)
at java.base/java.lang.Class.getConstructor0(Class.java:3508)
at java.base/java.lang.Class.getConstructor(Class.java:2244)
at studentsa/people.constructor.Bootstrap2.main(Bootstrap2.java:22)
!!!无论是protected还是private都会报错,getConstructor()方法只获取public的构造方法
2. getConstructors()方法【public】
代码:package people.constructor;
import java.lang.reflect.Constructor;
import java.util.Date;
public class Bootstrap2 {
public static void main(String[] args) throws SecurityException, NoSuchMethodException{
Class clazz = Person.class;
Constructor[] constructors = clazz.getConstructors();
for(Constructor constructor: constructors) {
System.out.println(constructor.toString());
}
}
}
public people.constructor.Person(java.lang.String,int) public people.constructor.Person(java.lang.String) public people.constructor.Person()
!!依然只能public
3. getDeclaredConstructor()方法【public/protected/private/..】
代码:将1. 中的getConstructor()全部改成getDeclaredConstructor()
package people.constructor;
import java.lang.reflect.Constructor;
import java.util.Date;
public class Bootstrap2 {
public static void main(String[] args) throws SecurityException, NoSuchMethodException{
Class clazz = Person.class;
Constructor constructor1 = clazz.getDeclaredConstructor();
System.out.println(constructor1.toString());
Constructor constructor2 = clazz.getDeclaredConstructor(String.class);
System.out.println(constructor2.toString());
Constructor constructor3 = clazz.getDeclaredConstructor(String.class,int.class);
System.out.println(constructor3.toString());
Constructor constructor4 = clazz.getDeclaredConstructor(boolean.class); //测试protected权限
System.out.println(constructor4.toString());
Constructor constructor5 = clazz.getDeclaredConstructor(Date.class); //测试private权限
System.out.println(constructor5.toString());
}
}
public people.constructor.Person() public people.constructor.Person(java.lang.String) public people.constructor.Person(java.lang.String,int) protected people.constructor.Person(boolean) private people.constructor.Person(java.util.Date)
!!可以显示protected和private的构造方法啦~耶
4. getDeclaredConstructors() 【public/protected/private/..】
代码:package people.constructor;
import java.lang.reflect.Constructor;
import java.util.Date;
public class Bootstrap2 {
public static void main(String[] args) throws SecurityException, NoSuchMethodException{
Class clazz = Person.class;
Constructor[] constructors = clazz.getDeclaredConstructors();
for(Constructor constructor: constructors) {
System.out.println(constructor.toString());
}
}
}
private people.constructor.Person(java.util.Date) protected people.constructor.Person(boolean) public people.constructor.Person(java.lang.String,int) public people.constructor.Person(java.lang.String) public people.constructor.Person()



