Основным исследованием в этой статье является получение подписей метода Java, и ниже приведены конкретные примеры реализации.
Пример кода:
пакет com.yunshouhu; импорт java.lang.reflect.field; import java.lang.reflect.method; импорт java.lang.reflect.type; импорт java.util.collection; импорт com.alibaba.fastjson.parser.defaultjsonparser; импорт com.alibaba.fastjson.parser.defaultjsonparser; импорт. com.alibaba.fastjson.parser.deserializer.objectdeserializer;/*** Получить подпись метода Java, см. Javah -Jni ClassPath/Javap -S ClassPath. * @author wujianhua * @date 5 сентября 2017 г. в 15:25:51 * @url http://blog.csdn.net/earbao */public class asmutilsforjavah {public static void main (string [] args) {System.out.println (asmutilsforjavah.getdesc (System.class)); System.out.println (asmutilsforjavah.getdesc (String.class)); s ystem.out.println (asmutilsforjavah.getdesc (integer.class)); System.out.println (asmutilsforjavah.getdesc (int.class)); метод method = asmutilsforjavah.class.getDeclaredMethod ("main", string []. Class); System.out.println ("Javah -jni "); System.out.println (asmutilsforjavah.getDesc (метод)); System.out.println (asmutilsforjavah.gettype (System.class)); System.out.println (asmutilsforjavah.gettype (asmutilsforjavah.class); vmname) {final String lowervmname = vmname.tolowercase (); return lowervmname.contains ("dalvik") || Lowervmname.contains ("lemur");} public static boolean isandroid () {return isandroid (system.getproperty ("java.vm.name"));} public Static String getDesc (Final Method Method) {final StringBuffer buf = new StringBuffer (); Buf.Append ("("); final Class Buf = new StringBuffer (); Buf.Append ("("); '? method.getParameterTypes (); for (int i = 0; i <tipes.length; ++ i) {buf.append (getDesc (types [i]));} buf.append (")"); buf.append (getDesc (method.getTernType ()); return buf.tostring ();} public static getDesc getDesc getDesce getDesce getDesce getDesce (finaty getDesce (); {if (returntype.isprimity ()) {return getprimitiveletter (returntype);} if (returntype.isarray ()) {return "[" + getDesc (returntype.getcomponentype ());} return "l" + getType (returntype) + ";";} public String gettyp gettyp (finate static gettyp <> fination gettyp <> static gettyp <> fination gettyp (returntype) + "; ParameterType) {if (parameterType.isArray ()) {return "[" + getDesc (parameterType.getComponentType ());} if (! parameterType.isprimity ()) {final String clsname = parametertype.getName (); return ClSname.Replaceall ("/"/"/"/"/"/"/"/";"/";"/"; getPrimitiveletter (parameterType);} public Static String GetPrimitiveletter (final Class <?> type) {if (integer.type.equals (type)) {return "i";} if (void.type.equals (type)) {return "v";} if (boolean.type.equals (type)) {return "; if (if boolean.type.eavals (type) {return"; (Parment.type.equals (type)) {return "c";} if (byte.type.equals (type)) {return "b";} if (short.type.equals (type)) {return "s";} if (float.type.equals (type)) {return "f";} if (long. (double.TYPE.equals(type)) {return "D";}throw new IllegalStateException("Type: " + type.getCanonicalName() + " is not a primitive type");}public static Type getMethodType(final Class<?> clazz, final String methodName) {try {final Method method = clazz.getMethod(methodName, (Class<?>[]) new Класс [0]); return Method.getGenericReturnType ();} catch (Exception ex) {return null;}} public static type getFieldType (final class <?> Clazz, final String fieldname) {try {final Field field = clazz.getfield (FieldName); return Field.getGenericPe ()} excember (exception ex) {return null; Pacersearray (окончательная коллекция коллекции, окончательный объект -эсериализатор Deser, Final DefaultJsonParser Parser, окончательный тип типа, конечный объект FieldName) {Final Jsonlexer Lexer = parser.getlexer (); if (lexer.token () == 8) {lexer.nextleken (16); Object item = deser.deserialze (parser, type, (объект) index); collection.add (item); ++ index; if (lexer.token ()! = 16) {break;} lexer.nexttoken (14);} parser.accte (15, 16);}}Выше приведено все содержание этой статьи о получении кода экземпляра для подписей метода Java. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!