A principal pesquisa deste artigo é obter assinaturas do método Java, e os seguintes são exemplos específicos de implementação.
Exemplo Código:
pacote com.yunshouhu; importar java.lang.reflect.field; importar java.lang.reflect.method; importar java.lang.reflect.type; import java.util.collection; import.alibaba.Fater.PerSer.DefaultjsonPerser; importação; com.alibaba.fastjson.parser.deserializer.objectDeseRializer;/*** Obtenha assinatura do método java, consulte Javah -jni ClassPath/javap -s ClassPath. * @author wujianhua * @date 5 de setembro de 2017 às 15:25:51 * @url http://blog.csdn.net/earbao */public class Asmutilsforjavah {public static void main (string [] args) args) {System.out.println (asmutilsforjavah.getdesc (system.class); ystem.out.println (asmutilsforjavah.getdesc (Integer.class)); system.out.println (asmutilsforjavah.getdesc (int.class)); método Método = asmutilsforjavah.class.getDecLaredMethod ("Main", String []. Class); System.out.println ("Javah -jni "); system.out.println (asmutilsforjavah.getdesc (método)); system.out.println (asmutilsforjavah.gettype (system.class); system.out.println (asmutJavah.gettype (asmutils.out.println (asmutJavah.gettype (asmutils.out.out.println (asmutJavah.gettype (asmutilshsjilsjavnnnnnililillilils.t); String vmname) {final string inferiorvmname = vmname.tolowercase (); return inferiorvmname.contains ("dalvik") || inferiorvmname.contains ("lemur");} public static boolean isandroid () {return isandroid (system.getProperty ("java.vm.name"));} public static string getDesc (método final) {finalbuffer buf = new stringbuffer (); métod.getParameterTypes (); para (int i = 0; i <types.length; ++ i) {buf.append (getDesc (tipos [i]));} buf.append (")"); BUF.Append (getDesc (Method.getrenuntty ()); retorno; {if (returnType.isPrimitive ()) {return getPrimitiveletter (returnType);} if (returnType.ISARRAY ()) {return "[" + getDesc (ReturnType.getComPontType ());} Return "l" + getType (retirtType) + "; ParameterType) {if (parameterType.isArray ()) {return "[" + getDesc (parameterType.getComponentType ());} if (! parametertype.isPrimitive ()) {final string clsname = parameterType.getName (); retorno ". getPrimitivelETter (parameterType);} public static string getPrimitiveletter (classe final <?> type) {if (Integer.type.equals (type)) {return (Caractere.type.equals (type)) {return "c";} if (byte.type.equals (type)) {return "b";} if (short.type.equals (tipo)) {return "s"; (Double.type.equals (tipo)) {return "d";} lança new ilegalStateException ("type:" + type.getCanonicalName () + "não é um tipo primitivo");} public staticpengty (Final class. Classe [0]); retorno método.getGenericReturntype ();} catch (exceção ex) {return null;}} public static tipo getFieldType (classe final <?> Clazz, string final fieldName) {try {field field = clazz.getfield (fieldname); retornar field.getGenerStyCy; Parsearray (coleção final, o objeto finalDeserializer Deer, analisador final de defaultjsonparser, tipo de tipo final, nome do objeto finalname) {final jsonlexer lexer = parser.getlexer (); if (lexer.token () == 8) {lexer.nextToken (16); = Deser.DeSerialze (analisador, tipo, (object) Índice); coletor.add (item); ++ index; if (lexer.token ()! = 16) {break;} lexer.nextToken (14);O exposto acima é o conteúdo inteiro deste artigo sobre a obtenção do código da instância para assinaturas do método Java. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!