1. 程式人生 > >Java反射機制在實際開發中的用法

Java反射機制在實際開發中的用法

public static void main(String[] args) {
		Class clazz = Student.class;
		//獲取所有的屬性(包括私有)
		Field[] fds = clazz.getDeclaredFields();
		for(Field f:fds){
			System.out.println(f.getName());
			System.out.println(f.getModifiers());
			System.out.println("------------------");
		}
		System.out.println("==================");
		
		//獲取所有的方法
		Method[] method = clazz.getDeclaredMethods();
		for(Method m:method){
			System.out.println(m.getName());
			System.out.println(m.getReturnType());
			System.out.println(m.getModifiers());
			System.out.println(m.getParameterCount());
			Class[] c = m.getParameterTypes();
			for(int i=0;i<m.getParameterCount();i++){
				System.out.println(c[i]);
			}
			System.out.println("-----------------------");
		}
		System.out.println("===========================");
		
		try {
			Field field = clazz.getField("name");
			System.out.println(field.getModifiers());
			Method m = clazz.getMethod("eat");
			Object obj = clazz.newInstance();
			field.set(obj, "XXXXX");
			m.invoke(obj);
		} catch (NoSuchFieldException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
另外一種載入該類的方法如下