Java Reflection API Learning

xiaoxiao2021-03-06  15

First, the test of Java Reflection API

Package tigers;

Import java.lang.reflect. *; import java.util. *; import java.sql. *; import java.io. *;

Public class tiger7 {private tiger {private transient int id; public tiger7 () throws exception {this ("aa", 23);} public tiger7 (string name) {this.name = name; this.id = ID;

Public static void main (string [] args) {Try {class c = class.Forname ("tigers.tiger7"); showfields (c); showconstructors (c); showMethods (c);} catch (exception ce) {CE .PrintStackTrace ();}} private static void showconstructors (class c) {constructor [] cons = c.getDeclaredConstructors (); for (constructor con: cons) {system.out.println ("<<<<<<<< " con " >>>>>>>>> ");}} private tiger7 my_method (String name, int ID, tiger7 t7) throws oException, sqlexception {returnireds (Class C) Throws Exception {Tiger7 T1 = New Tiger7 (); FIELD [] FIS = C.GetDeclaredFields (); for (Field F: FI) {system.out.println ("........." f ".. ... " ", / ngetmodifiers = " modifier.tostring (f.getmodifiers ()) ", / ngetname = " f.getName ());}} private static void showmethods (Class C) Throws exception {java.lang.reflect.method [] MES = c.getdeclaredMethods (); for (Method M: MES) {system.out.println ("*************" m "**** *********** "); System.out.Println (" getDeclaringclass = " m.getDeclaringclass (). Getname () ", / ngetExcetiontypes = " arrays.tostring (M.GETEXCEPTIONTYPES () ) ", / ngetGenericExceptionTypes =" Arrays.toString (m.getGenericExceptionTypes ()) ", / ngetParameterTypes =" Arrays.toString (m.getParameterTypes ()) ", / ngetGenericParameterTypes =" Arrays.toString (m .getGenericparameterTypes ()) ", / NgetRetype ="

M.Getreturntype () ", / ngetGenericreturntype =" M.GETGENERICRETURNTYPE () ", // ngetmodifiers =" Modifier.Tostring (M.GETMODIFIERS ()) ", / ngetname =" m.getname ()) }}}

........ private final java.lang.string tigers.tiger7.name ........, getModifiers = private final, getname = name ........ private transient int TiGERS. Tiger7.id ........, getModifiers = private transient, getname = id <<<<<<<< public tigers.tiger7 (java.lang.string, int) >>>>>>>> <>>>>>> < <<<<<<< public tigers.tiger7 () throws java.lang.exception >>>>>>>> ************************ Private static void tigers.tiger7.showfields Java.lang.class) Throws java.lang.exception ************** GetDeclaringClass = TiGEGERS.TIGER7, getExceptionTypes = [class java.lang.exception], getGenericexcetiontypes = [Class Java.lang .Exception], getParameterTypes = [class java.lang.Class], getGenericParameterTypes = [class java.lang.Class], getReturnType = void, getGenericReturnType = void, getModifiers = private static, getName = showFields ******** ****** Private static void Tigers.tiger7.showconstructors (java.lang.class) ************************* GetDeclaringClass = tigers.tiger7, getExceptionTypes = [], getGenericexceptionTypes = [] , getParameterTypes = [class java.lang.class], getGene ricParameterTypes = [class java.lang.Class], getReturnType = void, getGenericReturnType = void, getModifiers = private static, getName = showConstructors ************** private static void tigers.Tiger7.showMethods ( Java.lang.class) Throws java.lang.exception ************** GetDeclaringClass = TiGEGERS.TIGER7, getExceptionTypes = [class java.lang.exception], getGenericexcetiontypes = [Class Java.lang .Exception], getParameterTypes = [class java.lang.class], getGenericparameterTypes = [class java.lang.class], getreturntype = void, getGenericreturntype =

Void, getModifiers = private static, getName = showmeth 4 ************* Private tigers.tiger7 TiGGERS.TIGER7.MY_METHOD (java.lang.string, int, tigers.tiger7) throws java.io .IOException, java.sql.SQLException ************** getDeclaringClass = tigers.Tiger7, getExceptionTypes = [class java.io.IOException, class java.sql.SQLException], getGenericExceptionTypes = [class java.io.IOException, class java.sql.SQLException], getParameterTypes = [class java.lang.String, int, class tigers.Tiger7], getGenericParameterTypes = [class java.lang.String, int, class tigers.Tiger7], getReturnType = class tigers.Tiger7, getGenericReturnType = class tigers.Tiger7, getModifiers = private, getName = my_method ************** public static void tigers.Tiger7.main (java.lang.String [ ]) ************** GETDECLARINGCLASS = TIGERS.TIGER7, GETEXCEPTIONTYPES = [], getGenerXcetionTypes = [], getParameterTypes = [class [ljava.lang.string;], getGenericParameterTypes = [class [ Ljava.lang.string;], getreturntype = void, getGenericreturntype = void, getModifiers = public static, getname = main 2, using Java Reflection to dynamically create an array

Package tigers;

Import java.lang.reflect. *;

Public class tiger11 {private string name; public tiger11 {this.name = name;} public string toString () {return "(" name ")";} public static void main (string [] args {Try {class c = class.Forname ("tigers.tiger11"); object arrays = array.newinstance (C, 10); for (int i = 0; i <10; i ) {array.set (arrays, i NEW TIGER11 ("Bitan" i));} Tiger11 [] TIS = (Tiger11 []) arrays; // Mandatory Type Conversion System.out.rrays.tostring (TIS)); for INT i = 0; i <10; i ) {system.out.println (array.get (arrays, i));}}} catch (exception e) {E.PrintStackTrace ();}}} [(bitan0), (Bitan1), (Bitan3), (Bitan4), (Bitan5), (Bitan7), (Bitan8), (Bitan9)] (Bitan0) (Bitan1) (Bitan2) (Bitan2) (Bitan5) (Bitan6) (Bitan8) (Bitan9)

Third, create a new instance using Java Reflection

Package tigers;

Import java.lang.reflect. *;

Public class tiger9 {private string name; private int id; public tiger9 (string name = name) {this.name = name; this.id = ID;} public string toString () {return [" name ", " ID "] ";} public static void main (string [] args) {try {class c = class.Forname (" tigers.tiger9 "); constructor con = c.getDeclaredConstructor (Class.Forname (" Java. Lang.String "), int.class); Tiger9 T9 = (Tiger9) Con.NewInstance (" Bitan ", 25); System.out.Println (T9);} catch (Exception E) {E.PrintStackTrace (); }}}

result:

[Bitan, 25]

Fourth, using Java Reflection to dynamically obtain and change the status of the object

Package tigers;

Import java.lang.reflect. *;

Public class tiger10 {private type; public tiger10 (int ID, string name) {this.id = id; this.name = name;} public string toString () {return [" name ", " ID "] ";} public static void main (string [] args) {TRY {Tiger10 T10 = New Tiger10 (25," bitan "); class c = class.forname (" tigers.tiger10 "); Field f = c.GetDeclaredField ("ID"); Field F2 = C.GetDeclaredField ("Name"); System.out.Println (T10 "(" F2.Get (T10) "," F.Getint T10) ")"); F.setint (T10, 35); F2.SET (T10, "Helen"); System.out.Println (T10 "(" F2.Get (T10) "," F.Getint (T10) ")");} catch (exception e) {E.PrintStackTrace ();}}}

result:

[Bitan, 25] [Helen, 35] (HELEN, 35) The field of the same Tiger10 object is dynamically changed during operation.

V. Use Java Reflection to perform methods

Package tigers;

Import java.lang.reflect. *;

Public class tiger8 {private id dosomething (string name, int id) {system.out.println ("[" name "," ID "]"); Return ID 1000;}

Public static void main (string [] args) {try {class c = class.Forname ("tigers.tiger8"); method me = c.getDeclaredMethod ("DOSMETHING", Class.Forname ("java.lang.string") , int.class; integer result = (Integer) Me.Invoke (New Tiger8 (), "Bitan", 25); System.Out.println (Result.intValue ());} catch (exception e) {e. PRINTSTACKTRACE ();}}}

result:

[Bitan, 25] 1025

Now change the getDeclaredMethod () in main () to getMethod (), the result:

转载请注明原文地址:https://www.9cbs.com/read-46508.html

New Post(0)