/**
* 實例化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);
}
}
反射基礎之常用方法演示
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.