Java反射機制在實際開發中的用法
阿新 • • 發佈:2019-01-23
另外一種載入該類的方法如下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(); } }