Java基础----反射Reflect----Constructor

获取类的构造器Constructor
html

    在Java反射中通常方法名中包含getDelcared的方法都是只能访问该类的全部访问权限类型的构造器、方法或者成员变量和类变量,包括public、default(默认----方法名前什么都不写)、protecte、private;而其余的只能访问权限类型为public的方法或成员变量 包括继承过来的父类的public方法和成员变量、类变量,只能访问本类的public构造器方法。java

    a、public Constructor<?>[] getConstructors() 数组

    返回该类中全部public的构造方法
spa

    b、public Constructor<?>[] getDeclaredConstructors() code

    返回 Constructor 对象的一个数组,这些对象反映     此 Class 对象表示的类声明的全部构造方法。它们是公共、保护、默认(包)访问和私有构造方法  orm

public class SubClass  {

	private SubClass(){
		
	}
        private SubClass(String s,String s1){
		
	}
	public SubClass(String s){
		
	}
	protected SubClass(int i){
		
	}
	public static void main(String[] args) {
		try {
		        Class clz = SubClass.class;
			Constructor[] cons = clz.getConstructors();
			for (Constructor constructor : cons) {
				System.out.print(constructor.getModifiers()+"--");//权限
				System.out.println(constructor.toGenericString());//构造器名称
			}
			System.out.println("----------");
			Constructor[] cons1 = clz.getDeclaredConstructors();
			for (Constructor constructor : cons1) {
				System.out.print(constructor.getModifiers()+"--");//权限
				System.out.println(constructor.toGenericString());//构造器
			}
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
}

  运行结果:htm

1--public cn.trip.core.servlet.SubClass(java.lang.String)
----------
4--protected cn.trip.core.servlet.SubClass(int)
1--public cn.trip.core.servlet.SubClass(java.lang.String)
2--private cn.trip.core.servlet.SubClass(java.lang.String,java.lang.String)
2--private cn.trip.core.servlet.SubClass()

同理,对象

    c、public Constructor<T> getConstructor(Class<?>... parameterTypes)继承

    获取该类的public构造器形参参数类型为parameterTypes数组的构造器 ip

    d、public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)

    获取该类的private、public、protected、default类型的指定形参参数的构造器 

public class SubClass  {

	private SubClass(){
		
	}
    private SubClass(String s,String s1){
		
	}
	public SubClass(String s){
		
	}
	protected SubClass(int i){
		
	}
	public static void main(String[] args) {
		try {
		    Class clz = SubClass.class;
			Constructor constructor = clz.getConstructor(String.class);
			System.out.print(constructor.getModifiers()+"--");//权限
			System.out.println(constructor.toGenericString());//构造器名称
		System.out.println("----------");
			Constructor constructor1 = clz.getDeclaredConstructor(String.class,String.class);
			System.out.print(constructor1.getModifiers()+"--");//权限
			System.out.println(constructor1.toGenericString());//构造器
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
}

 运行结果:

1--public cn.trip.core.servlet.SubClass(java.lang.String)
----------
2--private cn.trip.core.servlet.SubClass(java.lang.String,java.lang.String)

   

   Constructor类中部分其余方法:

   public T newInstance(Object ... initargs)   建立并初始化一个类的实例   

   public Annotation[] getDeclaredAnnotations() 获取构造器上的全部注解

   public <T extends Annotation> T getAnnotation(Class<T> annotationClass)    获取指定名称的注解

相关文章
相关标签/搜索