Penelitian utama dalam artikel ini adalah untuk mendapatkan tanda tangan metode Java, dan berikut ini adalah contoh implementasi spesifik.
Contoh kode:
Paket com.yunshouhu; impor java.lang.reflect.field; import java.lang.reflect.method; import java.lang.reflect.type; import java.util.collection; import com.alibaba.fastjson.parser.defaultjsonparser; com.alibaba.fastjson.parser.deserializer.objectdeserializer;/*** Dapatkan tanda tangan metode java, lihat javah -jni classpath/javap -s classpath. * @author wujianhua * @date 5 September 2017 jam 3:25:51 pm * @url http://blog.csdn.net/earbao */Kelas Publik Asmutilsforjavah {public static void main (string [] args) melempar pengecualian melempar public static void (string [] args) melempar pengecuali {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)); metode Method = Asmutilsforjavah.class.getDeclaredMethod ("Main", String []. Class); System.out.println ("Javah -jni "); System.out.println (Asmutilsforjavah.getdesc (Metode)); System.out.println (asmutilsforjavah.getType (System.class)); System.out.println (asmutilsforjavah.gettype (asmutjorjoid (asmutjorroid (asmutjoid) (asmutJah.-klass (asmutJah.getroid (asmutJah.getroid (asMutilsForAndroid (asmutJaAndroid (asmutjoAndroid (asmutJaAndroid (asmutnav. vmname) {string final 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 (Metode akhir) {final stringBuffer buf = new stringBuffer (); method.getParametertypes (); for (int i = 0; i <type.length; ++ i) {buf.append (getDesc (type [i]));} buf.applappend (")"); buf.append (getDesc (method.getReturnType ()); return buf.toString (); {{get Method.getRetnType ()); return buf.toString); (returnType.isprimitive ()) {return getPrimitiveletter (returnType);} if (returnType.isArray ()) {return "[" + getDesc (returnType.getComponentType ();} return "l" + getType (returnType) + ";";} public static String getType (returnType) <? (ParameTerType.isArray ()) {return "[" + getDesc (parameTerType.getComponentType ());} if (! ParameterType.isprimitive ()) {string akhir clsname = parameTerType.getName (); return clsname.replaceall ("//.", "" " getPrimitiveletter (ParameTerType);} public static string getPrimitiveletter (kelas akhir <?> type) {if (integer.type.equals (type)) {return "i";} if (void.type.equals (type)) {return "v";} if (boolean.type.equals (type)) {return "v";} if (boolean.type.equals (type)) {return "v";} if (boolean.type.equals (type)) {return "v";} if (boolean.type.equals (type)) {view "; (Karakter.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.type.type.equals (type)) {return "f"; if (long.type.type. (double.type.equals (type)) {return "d";} lempar baru ilegalstateException ("type:" + type.getCanonicalName () + "bukan tipe primitif");} public static type getMethodType (class final <? Class [0]); return method.getGenericreturnType ();} catch (Exception ex) {return null;}} public static type getFieldType (kelas akhir <?> Clazz, string final fieldname) {coba {final field = clazz.getfield (fieldname); return field.getGenerype (); {Exccleoid = clazz.getfield (fieldname); return field.getGenerype (); Excepseoid (Exccleoid (fieldname); return field.getGenerype (); eveoid (Exccleoid (fieldname); return field.getGenerype (); everoid = clazz. ParSeArray (Koleksi Koleksi Akhir, Parser Final ObjectDeserializer, Parser Final DefaultJsonParser, Jenis Jenis Akhir, Final Object FieldName) {final Jsonlexer lexer = parser.getlexer (); if (lexer.token () == 8) {lexer.nexttoken (16);} suhu (parkir) = 14) {lexer.nextToken (16);} pawai () {14) {lexer.nexttoken (16);} parkir () {lexer. item = deser.deserialze (parser, type, (objek) index); collection.add (item); ++ index; if (lexer.token ()! = 16) {break;} lexer.nextToken (14);} parser.accept (15, 16);}}Di atas adalah seluruh konten artikel ini tentang mendapatkan kode contoh untuk tanda tangan metode Java. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!