1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      javajavassist庫處理類的基本用法
      public class Dema {
      
      //獲取原方法信息
      public static void test01() throws Exception
      {
          ClassPool pool=ClassPool.getDefault();
          CtClass cc=pool.get("cn.sxt.in.Emp");   //獲得已有的類
      
          byte[] bytes=cc.toBytecode();  //轉(zhuǎn)換成字節(jié)碼
          System.out.println(cc.getName()); //獲取類名
          System.out.println(cc.getSimpleName()); //獲取簡要類名
          System.out.println(cc.getSuperclass()); //獲取父類
          System.out.println(Arrays.toString(bytes));
          System.out.println(cc.getInterfaces()); //獲取接口,返回的是數(shù)組
      }
      
      //添加方法
      public static void test02() throws Exception
      {
          ClassPool pool =ClassPool.getDefault();
          CtClass cc=pool.get("cn.sxt.in.Emp");
      
          //創(chuàng)建新方法
          CtMethod m=CtNewMethod.make("public int add(int a,int b){return a+b;}", cc);
          //創(chuàng)建新方法
          CtMethod m2=new CtMethod(CtClass.intType,"add2",new CtClass[] {CtClass.intType,CtClass.intType},cc);
          m2.setModifiers(Modifier.PUBLIC);   //設(shè)置權(quán)限
          m2.setBody("{System.out.println(\"yes\");return $1+$2;}"); //占位符代替形參名
      
          cc.addMethod(m2);
          cc.addMethod(m);
      
          //通過反射調(diào)用新生成的方法
      
          Class clazz=cc.toClass();
          Object obj=clazz.newInstance(); //通過調(diào)用Emp的無參構(gòu)造器,創(chuàng)建新的Emp對象
          Method method=clazz.getDeclaredMethod("add2",int.class,int.class);
          Object result=method.invoke(obj, 200,300);
          System.out.println(result);
      
      }
      //修改方法
      public static void test03() throws Exception
      {
          ClassPool pool=ClassPool.getDefault();
          CtClass cc=pool.get("cn.sxt.in.Emp");
      
          CtMethod cm=cc.getDeclaredMethod("sayHello",new CtClass[] {CtClass.intType});
          //在方法開頭添加內(nèi)容
          cm.insertBefore("System.out.println($1);System.out.println(\"start\");");
          //在某一行前面加代碼
          cm.insertAt(8, "System.out.println(\"ugly\");");
          //在方法后面加內(nèi)容
          cm.insertAfter("System.out.println(\"end\");");
      
          Class clazz=cc.toClass();
          Object obj=clazz.newInstance(); //通過調(diào)用Emp的無參構(gòu)造器,創(chuàng)建新的Emp對象
          Method method=clazz.getDeclaredMethod("sayHello",int.class);
          method.invoke(obj,300);
      }
      //修改屬性
      public static void test04() throws Exception
      {
          ClassPool pool=ClassPool.getDefault();
          CtClass cc=pool.get("cn.sxt.in.Emp");
      
          CtField f1=CtField.make("private int emm;", cc);
          CtField f2=new CtField(CtClass.intType,"emm2",cc);
          f2.setModifiers(Modifier.PRIVATE);
      
          cc.addField(f1,"100"); //傳默認值
          cc.addField(f2);
      
          //cc.getDeclaredField("ename"); 獲取指定屬性
      
          //增加相應(yīng)的set和get方法
          cc.addMethod(CtNewMethod.getter("getEmm2", f2));
          cc.addMethod(CtNewMethod.getter("setEmm2", f2));
      
      }
      
      //構(gòu)造器
      public static void test05() throws Exception
      {
          ClassPool pool=ClassPool.getDefault();
          CtClass cc=pool.get("cn.sxt.in.Emp");
      
          CtConstructor[] cs= cc.getConstructors();
          for(CtConstructor c:cs)
          {
              System.out.println(c.getLongName());
      
          }
      
      }
      //調(diào)用注解
      public static void test06() throws Exception
      {
          ClassPool pool=ClassPool.getDefault();
          CtClass cc=pool.get("cn.sxt.in.Emp");
      
          Object[] all=cc.getAnnotations();
          Author a=(Author)all[0];
          String name=a.name();
          int year=a.year();
          System.out.println("name:"+name+",year:"+year);
      
      }
      public static void main(String[] args) throws Exception {
      
          test06();
      }
      }

      新聞標題:javajavassist庫處理類的基本用法
      當(dāng)前鏈接:http://ef60e0e.cn/article/gegije.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        闸北区| 宜都市| 普安县| 阿尔山市| 新干县| 白玉县| 庆云县| 西宁市| 南城县| 建平县| 京山县| 连平县| 玉田县| 疏附县| 南安市| 鹿邑县| 应城市| 聂拉木县| 介休市| 通辽市| 岗巴县| 米林县| 塔城市| 凤山县| 通州区| 宜兰市| 浙江省| 连平县| 拜泉县| 苍山县| 三门峡市| 大竹县| 贺州市| 哈巴河县| 海盐县| 和平区| 大余县| 治多县| 罗定市| 绥棱县| 元谋县|