package com.sysware.adapter.forclient.action;java
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Field;對象
public class Test {繼承
@SuppressWarnings("rawtypes")
public static void main(String[] args) {get
// NoodleFactory nf = new NoodleFactory();
// nf.createNoodle(NoodleFactory.GB);
// ProductFactory pf = new ProuctFactoryC();
// pf.getProdut1().show();
// System.out.println("start");
//
// try {
// Class.forName("com.sysware.adapter.forclient.action.User",false,Test.class.getClassLoader());
//
// System.out.println("123");
//
// } catch (Exception e) {
// e.printStackTrace();
// }
try {
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//獲取類描述符
Class clazz = Class.forName("com.sysware.adapter.forclient.action.Student");
//進行實例化(默認使用空構造的實例化方法)
Object obj = clazz.newInstance();
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//-----------------------------------------------Method---------------------------------------
//經過類描述符獲得全部的繼承關係下的全部公共方法
Method[] method = clazz.getMethods();
System.out.println("--------getMethods----------");
for(Method m : method){
System.out.println(m.getName());
}
//經過類描述符得該類下的方法
Method[] md = clazz.getDeclaredMethods();
System.out.println("--------getDeclaredMethods----------");
for(Method m : md){
System.out.println(m.getName());
}
//經過類描述符活的指定的方法
Method med = clazz.getMethod("setAge", String.class);
//調用該對象的該方法
med.invoke(obj, "12");
//經過類描述符活的指定的方法
Method medd = clazz.getDeclaredMethod("show",null);
//設置可訪問性(因爲該方法爲私有方法)
medd.setAccessible(true);
medd.invoke(obj, null);
//---------------------------------------------Field----------------------------------------
Field[] field = clazz.getFields();
for(Field f:field){
System.out.println(f.getName());
}
Field[] field2 = clazz.getDeclaredFields();
for(Field f:field2){
System.out.println(f.getName());
}
Field f = clazz.getDeclaredField("age");
f.setAccessible(true);
System.out.println("--"+f.get(obj));
//設置字段的值
f.set(obj, "test");
System.out.println("++"+f.get(obj));
//---------------------------------------------Constructor----------------------------------------
Constructor[] constructor = clazz.getConstructors();
for(Constructor c:constructor){
System.out.println(c.getName());
}
Constructor[] constructor2 = clazz.getDeclaredConstructors();
for(Constructor c:constructor2){
System.out.println(c.getName());
}
//---
Class cl = Class.forName("com.sysware.adapter.forclient.action.Famer");
Constructor c3 = cl.getDeclaredConstructor(String.class);
Object oj = c3.newInstance("2");
Field fkd = cl.getDeclaredField("no");
fkd.setAccessible(true);
System.out.println(fkd.get(oj));
io
} catch (Exception e) {
e.printStackTrace();
}
}
}
class