国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

如何用Java編寫(xiě)自己的庫(kù)(3)

2019-11-18 11:52:11
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  回憶一下,我在本文的開(kāi)頭,曾經(jīng)提到過(guò):"一個(gè)好的庫(kù)必須是一個(gè)緊湊的關(guān)系緊密的整體,而不是一個(gè)分散的關(guān)系松散的對(duì)象的集合。"從API說(shuō)明文檔所顯示的這個(gè)庫(kù)的樹(shù)形結(jié)構(gòu),并不能看出這些類之間的聯(lián)系。而從源代碼的角度,我們則可以清楚地看到這一點(diǎn)。在這一部分的討論中,我們 也明白了兩點(diǎn):
  1、如何編寫(xiě)重載構(gòu)造函數(shù)
  2、在一個(gè)類的實(shí)例中返回另外一個(gè)類的實(shí)例
  接下來(lái),看看Matcher類。這個(gè)類實(shí)現(xiàn)了MatchResult interface. 看看MatchResult的定義:
  [games]$javap -classpath .. -s jregex.MatchResult
  Compiled from jregex/MatchResult.java
  public interface jregex.MatchResult
  /* ACC_SUPER bit NOT set */
  {
  public static final int MATCH;
  /* I */
  public static final int PREFIX;
  /* I */
  public static final int SUFFIX;
  /* I */
  public static final int TARGET;
  /* I */
  public abstract jregex.Pattern pattern();
  /* ()Ljregex/Pattern; */
  public abstract int groupCount();
  /* ()I */
  public abstract boolean isCaptured();
  /* ()Z */
  public abstract boolean isCaptured(int);
  /* (I)Z */
  public abstract boolean isCaptured(java.lang.String);
  /* (Ljava/lang/String;)Z */
  public abstract java.lang.String group(int);
  /* (I)Ljava/lang/String; */
  public abstract boolean getGroup(int, java.lang.StringBuffer);
  /* (ILjava/lang/StringBuffer;)Z */
  public abstract boolean getGroup(int, jregex.TextBuffer);
  /* (ILjregex/TextBuffer;)Z */
  public abstract java.lang.String group(java.lang.String);
  /* (Ljava/lang/String;)Ljava/lang/String; */
  public abstract boolean getGroup(java.lang.String, java.lang.StringBuffer);
  /* (Ljava/lang/String;Ljava/lang/StringBuffer;)Z */
  public abstract boolean getGroup(java.lang.String, jregex.TextBuffer);
  /* (Ljava/lang/String;Ljregex/TextBuffer;)Z */
  public abstract java.lang.String prefix();
  /* ()Ljava/lang/String; */
  public abstract java.lang.String suffix();
  /* ()Ljava/lang/String; */
  public abstract java.lang.String target();
  /* ()Ljava/lang/String; */
  public abstract int targetStart();
  /* ()I */
  public abstract int targetEnd();
  /* ()I */
  public abstract char targetChars()[];
  /* ()[C */
  public abstract int start();
  /* ()I */
  public abstract int end();
  /* ()I */
  public abstract int length();
  /* ()I */
  public abstract int start(int);
  /* (I)I */
  public abstract int end(int);
  /* (I)I */
  public abstract int length(int);
  /* (I)I */
  public abstract char charAt(int);
  /* (I)C */
  public abstract char charAt(int, int);
  /* (II)C */
  }
  jregex.MatchResult定義了一些abstract函數(shù)。有什么作用?在后面我們將會(huì)討論到。
  再看看Matcher的實(shí)現(xiàn)。
  
  games]$javap -classpath .. -s jregex.Matcher
  Compiled from jregex/Matcher.java
  public class jregex.Matcher extends java.lang.Object implements jregex.MatchResult {
  public static final int ANCHOR_START;
  /* I */
  public static final int ANCHOR_LASTMATCH;
  /* I */
  public static final int ANCHOR_END;
  /* I */
  public static final int ACCEPT_INCOMPLETE;
  /* I */
  jregex.Matcher(jregex.Pattern);
  /* (Ljregex/Pattern;)V */
  public final void setTarget(jregex.Matcher, int);
  /* (Ljregex/Matcher;I)V */
  public void setTarget(java.lang.String);
  /* (Ljava/lang/String;)V */
  public void setTarget(java.lang.String, int, int);
  /* (Ljava/lang/String;II)V */
  public void setTarget(char[], int, int);
  /* ([CII)V */
  public final void setTarget(char[], int, int, boolean);
  /* ([CIIZ)V */
  public void setTarget(java.io.Reader, int) throws java.io.IOException;
  /* (Ljava/io/Reader;I)V */
  public final boolean isStart();
  /* ()Z */
  public final boolean matches();
  /* ()Z */
  public final boolean matches(java.lang.String);
  /* (Ljava/lang/String;)Z */
  public void setPosition(int);
  /* (I)V */
  public final boolean find();
  /* ()Z */
  public final boolean find(int);
  /* (I)Z */
  public jregex.MatchIterator findAll();
  /* ()Ljregex/MatchIterator; */
  public jregex.MatchIterator findAll(int);
  /* (I)Ljregex/MatchIterator; */
  public final boolean proceed();
  /* ()Z */
  public final boolean proceed(int);
  /* (I)Z */
  public final void skip();
  /* ()V */
  public java.lang.String toString();
  /* ()Ljava/lang/String; */
  public jregex.Pattern pattern();
  /* ()Ljregex/Pattern; */
  public java.lang.String target();
  /* ()Ljava/lang/String; */
  public char targetChars()[];
  /* ()[C */
  public int targetStart();
  /* ()I */
  public int targetEnd();
  /* ()I */
  public char charAt(int);
  /* (I)C */
  public char charAt(int, int);
  /* (II)C */
  public final int length();
  /* ()I */
  public final int start();
  /* ()I */
  public final int end();
  /* ()I */
  public java.lang.String prefix();
  /* ()Ljava/lang/String; */
  public java.lang.String suffix();
  /* ()Ljava/lang/String; */
  public int groupCount();
  /* ()I */
  public java.lang.String group(int);
  /* (I)Ljava/lang/String; */
  public java.lang.String group(java.lang.String);
  /* (Ljava/lang/String;)Ljava/lang/String; */
  public boolean getGroup(int, jregex.TextBuffer);
  /* (ILjregex/TextBuffer;)Z */
  public boolean getGroup(java.lang.String, jregex.TextBuffer);
  /* (Ljava/lang/String;Ljregex/TextBuffer;)Z */
  public boolean getGroup(int, java.lang.StringBuffer);
  /* (ILjava/lang/StringBuffer;)Z */
  public boolean getGroup(java.lang.String, java.lang.StringBuffer);
  /* (Ljava/lang/String;Ljava/lang/StringBuffer;)Z */
  public java.lang.String groups()[];
  /* ()[Ljava/lang/String; */
  public java.util.Vector groupv();
  /* ()Ljava/util/Vector; */
  public final boolean isCaptured();
  /* ()Z */
  public final boolean isCaptured(int);
  /* (I)Z */
  public final boolean isCaptured(java.lang.String);
  /* (Ljava/lang/String;)Z */
  public final int length(int);
  /* (I)I */
  public final int start(int);
  /* (I)I */
  public final int end(int);
  /* (I)I */
  public java.lang.String toString_d();
  /* ()Ljava/lang/String; */
  static {};
  /* ()V */
  
  
  先來(lái)看看它的構(gòu)造函數(shù),這個(gè)函數(shù)在Pattern中被調(diào)用用來(lái)構(gòu)造Matcher類的實(shí)例。
  
  Matcher(Pattern regex){
  //注重下面這一行,它說(shuō)明Matcher類的內(nèi)部有一個(gè)指向Pattern實(shí)例的reference.
  this.re=regex;
  //int memregCount=(memregs=new MemReg[regex.memregs]).length;
  //for(int i=0;i // this.memregs[i]=new MemReg(-1); //unlikely to SearchEntry, in this case we know memreg indicies by d
  efinition
  //}
  //counters=new int[regex.counters];
  //int lookaheadCount=(lookaheads=new LAEntry[regex.lookaheads]).length;
  //for(int i=0;i // this.lookaheads[i]=new LAEntry();
  //}
  //定義了一些內(nèi)部的數(shù)據(jù),MemReg是一個(gè)有三個(gè)整數(shù)的類。類的聲明見(jiàn)下。
  int memregCount,counterCount,lookaheadCount;
  if((memregCount=regex.memregs)>0){
  MemReg[] memregs=new MemReg[memregCount];
  for(int i=0;i memregs[i]=new MemReg(-1); //unlikely to SearchEntry, in this case we know memreg indicies by defin
  ition
  }
  this.m

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 涞水县| 景洪市| 自贡市| 廉江市| 镇江市| 仙居县| 岢岚县| 日土县| 义乌市| 邳州市| 平远县| 长治市| 洪湖市| 樟树市| 淮安市| 海城市| 岱山县| 中卫市| 丹阳市| 纳雍县| 文成县| 九龙城区| 花垣县| 朝阳市| 陆丰市| 通道| 哈巴河县| 和林格尔县| 喀喇沁旗| 额敏县| 时尚| 平果县| 东安县| 德保县| 双桥区| 淅川县| 昭觉县| 威远县| 大化| 平远县| 正阳县|