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)    獲取指定名稱的註解

相關文章
相關標籤/搜索