public class User {
public String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public User() {
}
private void run() {
System.out.println("我會跑");
}
private void run(String name) {
System.out.println(name + "我會跑");
}
public void say() {
System.out.println("我會說話");
}
public static void main(String[] args) throws ClassNotFoundException,
NoSuchFieldException, SecurityException, NoSuchMethodException,
IllegalAccessException, IllegalArgumentException,
InvocationTargetException, InstantiationException {
// 加載這個類的class文件
Class c = Class.forName("com.sxt.User");
// 創建一個實例化的對象
User u = (User) c.newInstance();
// 類的全路徑
System.out.println(c.getName());
// 類的名稱
System.out.println(c.getSimpleName());
// 返回類的權限
System.out.println(Modifier.toString(c.getModifiers()));
// 判斷是否是接口
System.out.println(c.isInterface());
// 拿到父類的全稱
System.out.println(c.getSuperclass().getName());
// 父類的名字
System.out.println(c.getSuperclass().getSimpleName());
// 獲取類中的public的屬性
Field f = c.getField("name");
System.out.println(f.getName());
// 獲取所有權限類型的屬性
Field age = c.getDeclaredField("age");
System.out.println(age.getName());
// 獲取所有public的屬性
Field[] fs = c.getFields();
// 獲取所有類型的所有屬性
Field[] dfs = c.getDeclaredFields();
System.out.println(dfs.length);
System.out
.println("======================================================");
// 獲取所有公共方法包含父類和接口
Method[] ms = c.getMethods();
for (Method m : ms) {
System.out.println(m.getName());
}
System.out
.println("======================================================");
// 通過方法名獲取公共方法
Method m = c.getMethod("say");
System.out.println(m.getName());
System.out
.println("======================================================");
// 獲取所有本類的方法
Method[] bms = c.getDeclaredMethods();
for (Method bm : bms) {
System.out.println(bm.getName());
}
System.out
.println("======================================================");
// 通過名字獲取本類的方法
Method bm = c.getDeclaredMethod("run");
System.out.println(bm.getName());
// 調用本類的帶參數的方法
Method cm = c.getDeclaredMethod("run", String.class);
cm.invoke(u, "張三");
}
}
個人日記2017.08.12
反射:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.