<address id="zhpbl"></address>
<noframes id="zhpbl">
<address id="zhpbl"><form id="zhpbl"><th id="zhpbl"></th></form></address>

    <em id="zhpbl"></em>

      <address id="zhpbl"><th id="zhpbl"><progress id="zhpbl"></progress></th></address>
      更多精彩內容,歡迎關注:

      視頻號
      視頻號

      抖音
      抖音

      快手
      快手

      微博
      微博

      aspect java

      文檔

      aspect java

      aspect java是一個面向切面的框架,它擴展了Java語言。AspectJ定義了AOP語法所以它有一個專門的編譯器用來生成遵守Java字節編碼規范的Class文件。
      推薦度:
      導讀aspect java是一個面向切面的框架,它擴展了Java語言。AspectJ定義了AOP語法所以它有一個專門的編譯器用來生成遵守Java字節編碼規范的Class文件。

      aspect java是一個面向切面的框架,它擴展了Java語言。AspectJ定義了AOP語法所以它有一個專門的編譯器用來生成遵守Java字節編碼規范的Class文件。

      首先是幾個概念:

      aspect(層面)

      pointcut(切入點)

      advice(建議)

      weave(織入)

      LTW(加載期織入 load time weave)

      按照aspectj的語法規則,一個aspect就是很多pointcut和advice的集合,也就是一個*.aj的文件。

      一個pointcut就是對target class的切入點定義,類似Java class定義中的field。

      一個advice就是對target class的行為改變,類似Java class中的method。

      weave就是aspectj runtime庫把aspect織入到target class的行為。

      LTW就是指運行期間動態織入aspect的行為,它是相對靜態織入行為(包括對源文件、二進制文件的修改)。

      一般來講,從運行速度上來說,靜態織入比動態織入要快些。因為LTW需要使用aspectj本身的classloader,它的效率要低于jdk的classloader,因此當需要load的class非常多時,就會很慢的。

      pycharm, ?o?è?ˉ??2, ?oo ??? ???è′1?′??????????

      舉個例子來說明aspectj的使用:

      scenario: Example工程需要使用一個類Line存在于第三方庫Line.jar中,但是Line本身沒有實現Serializable接口,并且其toString方法輸出也不完善。因此這兩點都需要修改。

      Line的實現:

      package?bean;
      public?class?Line?{undefined
      protected?int?x1?=?0;
      protected
      int?x2?=?0;
      public?int
      getX1(){undefined
      return?x1;
      }
      public?int
      getX2(){undefined
      return?x2;
      }
      public?void
      setLength(int?newX,?int?newY){undefined
      setX1(newX);
      setX2(newY);
      }
      public?void
      setX1(int?newX)?{undefined
      x1?=?newX;
      }
      public?void
      setX2(int?newY)?{undefined
      x2?=?newY;
      }
      public
      String?toString(){undefined
      return?"("?+?getX1()?+?",?"?+?getX2()?+?")"?;
      }
      }
      Main?entry?:
      public?class?MyExample?{undefined
      private?Line?line?=?null;
      public?MyExample()?{undefined
      line?=?new?Line();
      System.err.println("Line
      implement?serializable?interface?:?"
      +
      (line?instanceof?Serializable));
      }
      public?void?showMe()?{undefined
      System.out.println("Show?all
      about?me?...");
      System.out.println(line.toString());
      }
      public?static?void?main(String[]?args)?{undefined
      MyExample?demo?=?new
      MyExample();
      //?i?want?to?change?the?action
      of?show?me,?but?i?cannot?get?line?source.
      //?so?i?will?trying?load-time
      weaving
      demo.showMe();
      }
      }
      output?:
      Line?implement?serializable?interface?:?true
      Show?all?about?me?...
      (0,?0)

      以上就是小編今天的分享了,希望可以幫助到大家。

      文檔

      aspect java

      aspect java是一個面向切面的框架,它擴展了Java語言。AspectJ定義了AOP語法所以它有一個專門的編譯器用來生成遵守Java字節編碼規范的Class文件。
      推薦度:
      為你推薦
      資訊專欄
      熱門視頻
      相關推薦
      怎樣改抖音名字的昵稱 assert java asterisk java axis java bitset java boolean java brew java c#調用java c#調用java接口 cache java calendar java qq實名認證怎么解除 callable java character java class轉java cmake java compareto java 被刪的微信聊天記錄怎么找回來 continue java django java ansible java ajax java antlr java 交管12123怎么查科目一分數 abstract java 拼多多拒收在哪里操作 微信恢復刪除的聊天記錄 微信掃碼不能掃了怎么辦 怎樣查看微信刪除的聊天記錄 兩個二維碼怎么拼一起 電腦忘記開機密碼怎么辦 js 字符串轉數字 linux ftp python range函數 java 泛型 java json java final java foreach java hashmap java lambda
      Top 少妇高潮太爽了在线视频