この記事の主な研究は、Javaメソッドシグネチャを取得することであり、以下は具体的な実装の例です。
例コード:
パッケージcom.yunshouhu; Import java.lang.Reflect.field; Import Java.lang.Reflect.Method; Import Java.Lang.Reng.Reflect.Type; Import java.util.collection; Import com.alibaba.fastjson.parser.defaultjsonparser; Import com.alibaba.fast.fast.fast.fastjson.phers.phers.phers.phers.phers.phers com.alibaba.fastjson.parser.deserializer.objectdeserializer;/*** javaメソッドの署名を取得します。Javah-jni classpath/javap -s classpathを参照してください。 * @author wujianhua * @date 2017年9月5日午後3時25分51 PM * @url http://blog.csdn.net/earbao */public class asmutilsforjavah {public static void main(string [] arg)スロー例外{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 method = asmutilsforjavah.class.getDeclaredMethod( "main"、string []。class); system.out.println( "javah -jni "); system.out.println(asmutilsforjavah.getdesc(method)); system.out.println(asmutilsforjavah.getType(system.class)); system.out.println(asmutilsforjavah.gettype(asmutilsforjavah.cless class); ISANDROID(final String 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(最終方法){最終的な弦楽buffer buf = new stringbuffer(]; buf.append; buf.append([]; Method.getParametertypes(); returnType){if(returnType.isprimiTive()){return getPrimitiveLetter(returnType);} if(returnType.isarray()){"" + getDesc(returnType.getComponentType());} return "l" l " + getType(returntype) class <?> parametertype){if(parametertype.isarray()){return "[" + getDesc(parametertype.getComponentType());} if(!parametertype.isprimitive(){final string clsname = parametertype.getName(); return clsname( "/");} return getPrimitiveLetter(parametertype);} public static string getPrimitiveLetter(最終クラス<? "z";} if(character.type.equals(type)){return "c";} if(byte.type.equals(type)){return "b";} if(short.type.equals(type)){return "s";} if(float.type.equals)){return return. "j";} if(double.type.equals(type)){return "d";}新しいIllegalstateException( "Type:" + type.getCanonicalName() + "は原始型ではありません") (class <? null;}} public static void parsearray(最終コレクションコレクション、最終objectdeserializer deser、最終的なdefaultjsonparserパーサー、最終型タイプ、最終オブジェクトフィールド名){最終jsonlexer lexer = parser.getlexer(); if(lexer.token()= 8){lexer.nexteken(16); par.par.par. 0; while(true){final object item = deser.deserialze(parser、type、(object)index); collection.add(item); ++ index; if(lexer.token()!= 16){break;} nexttoken(14);} parser.acect(15、16);}}}上記は、Javaメソッドシグネチャのインスタンスコードの取得に関するこの記事の内容全体です。私はそれが誰にでも役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!