การวิจัยหลักในบทความนี้คือการได้รับลายเซ็นวิธี Java และตัวอย่างต่อไปนี้เป็นตัวอย่างการใช้งานเฉพาะ
รหัสตัวอย่าง:
แพ็คเกจ com.yunshouhu; นำเข้า java.lang.reflect.field; นำเข้า java.lang.reflect.method; นำเข้า java.lang.reflect.type; นำเข้า java.util.collection; นำเข้า com.alibaba.fastjson.parser.defaultjsonparserer; com.alibaba.fastjson.parser.deserializer.objectdeserializer;/*** รับลายเซ็นของ Java, อ้างถึง Javah -jni classpath/javap -s classpath * @author wujianhua * @date 5 กันยายน 2017 เวลา 3:25:51 PM * @url http://blog.csdn.net/earbao */คลาสสาธารณะ asmutilsforjavah {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 สตริง vmname) {สตริงสุดท้าย lowervmname = vmname.toLowerCase (); return lowervmname.contains ("dalvik") || lowervmname.contains ("lemur");} บูลีนสแตติกสาธารณะ isandroid () {return isandroid (system.getProperty ("java.vm.name"));} สตริงคงที่ getDesc (วิธีสุดท้าย) method.getParameterTypes (); สำหรับ (int i = 0; i <types.length; ++ i) {buf.append (getDesc (ประเภท [i]));} buf.append (")"); buf.append (getDesc (method.getReturntype () {if (returnType.isprimitive ()) {return getPrimitiVeletter (returnType);} ถ้า (returnType.isarray ()) {return "[" + getDesc (returnType.getComponentType ()) ParameterType) {if (parameterType.isarray ()) {return "[" + getDesc (parameterType.getComponentType ());} ถ้า (! parameterType.isprimitive () {สตริงสุดท้าย clsname = parameterType.getName () getPrimItiVeletter (พารามิเตอร์ type);} สตริงคงที่สาธารณะ getPrimitiVeletter (คลาสสุดท้าย <?> ประเภท) {ถ้า (integer.type.equals (ประเภท)) {return "i";} ถ้า (void.type.equals (type)) {return "v"; (character.type.equals (ประเภท)) {return "c";} ถ้า (byte.type.equals (ประเภท)) {return "b";} ถ้า (short.type.equals (ประเภท)) {return "s";} ถ้า (float.type.equals (type) {return "; (double.type.equals (type)) {return "d";} โยน ungelStateException ใหม่ ("ประเภท:" + type.getCanonicalName () + "ไม่ใช่ประเภทดั้งเดิม");} public Static type getMethodtype คลาส [0]); วิธีการส่งคืน getGenerIsReturnType ();} catch (Exception ex) {return null;}} ประเภทคงที่สาธารณะ getFieldType (คลาสสุดท้าย <?> clazz, สตริงสุดท้าย fieldName) {ลอง {field field field = clazz.get.getfield (fieldName); Parsearray (คอลเลกชันสุดท้ายคอลเลกชัน final objectDeserializer deser, defaultjsonparser parser สุดท้าย, ประเภทประเภทสุดท้าย, fieldname วัตถุสุดท้าย) {สุดท้าย jsonlexer lexer = parser.getlexer () ถ้า (lexer.token () == 8) {lexer.nexttoken (16); item = deser.deserialze (parser, type, (วัตถุ) ดัชนี); collection.add (รายการ); ++ ดัชนี; ถ้า (lexer.token ()! = 16) {break;} lexer.nexttoken (14);} parser.accept (15, 16);}};ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับการได้รับรหัสอินสแตนซ์สำหรับลายเซ็นวิธี Java ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!