反射基礎之常用方法演示

/**
 * 實例化Class類,及演示常用方法使用
 * @author Administrator
 *
 */
public class ClassDome {
	public static void main(String[] args) {
		Class<?> cl = null;
		/*
		 * 使用class方法的靜態方法forName()指定路徑實例化class對象,拋出異常
		 */
		try {
			cl = Class.forName("java.lang.Integer");
			System.out.println("cl:  " + cl);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		/*
		 * 調用Class對象的Constructors方法,返回相應類的公共構造器Constructors數組【公有構造器】
		 */
		Constructor<?>[] array = cl.getConstructors();
		/*
		 * 調用Class對象的getDeclaredConstructor(),返回相應類的聲明的所有的構造器Constructors數組【包括私有的】
		 */
		Constructor<?>[] arrayConstructor = cl.getDeclaredConstructors();
		/*
		 * 調用Class方法對象的getConstructor(參數.class),返回帶參構造器對象
		 */
		try {
			Constructor<?> consturctor = cl.getConstructor(int.class);
		} catch (NoSuchMethodException | SecurityException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		/*
		 * 調用Class對象的getFields方法,返回Class對應的類的全部public屬性,包括父類繼承的
		 */
		Field[] field = cl.getFields();
		/*
		 * 調用Class對象的getDeclaredFields(),返回Class對象的全部屬性值(不包括父類繼承的屬性)
		 * 
		 */
		Field[] fields = cl.getDeclaredFields();
		/*
		 * 調用Class對象的getMehtods,返回Class對應的類的public方法(包括繼承方法j及接口實現方法)
		 */
		Method[] methodsPublic = cl.getMethods();
		/*
		 * 調用Class對象的getDeclaerdMethod()方法,返回Class對應類定義的方法(繼承方法除外)
		 */
		Method[] methodsClass = cl.getDeclaredMethods();
		/*
		 * 調用Class對象的getMethod()方法,返回method對象及相應的參數類型 第一個參數:方法的名字,第二個參數是參數的Class對象
		 */
		try {
			Method method = cl.getMethod("toString", int.class);
		} catch (NoSuchMethodException | SecurityException e) {
			e.printStackTrace();
		}
		/*
		 * 調用Class對象,獲取類中是實現的所有的接口的Class的接口
		 */
		Class<?>[] clas = cl.getInterfaces();
		/*
		 * 調用Class對象,獲取類的完整的類路徑
		 */
		String name = cl.getName();
		/*
		 * 調用Class對象的getPackage()方法,返回Package對象,可以使用getName()獲取相應的包路徑
		 */
		Package packageName = cl.getPackage();
		System.out.println(packageName.getName());
		/*
		 * 調用Class對象的getSimpleName(),返回String類型,相應對象的名
		 */
		String stringName = cl.getSimpleName();
		System.out.println(stringName);

	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章