パッケージ org.piax.common

クラス Id

java.lang.Object
org.piax.common.Id
すべての実装されたインタフェース:
Serializable, Comparable<Id>
直系の既知のサブクラス:
ObjectId, PeerId

public class Id
extends Object
implements Serializable, Comparable<Id>
任意長のbyte列、または ASCII文字列からなる Identifierを実現するImmutableクラス。

Idオブジェクトの生成時には、byte列またはASCII文字列を指定する。 ASCII文字列を指定した場合でも、内部的にはbyte列に変換して管理する。 toStringメソッドを使うことで、指定したASCII文字列の表現を取得できる。 但し、ASCII文字列を指定しないで直接byte列を指定した場合でも、そのbyte列が7bitの ASCII列である場合は、toStringは、ASCII文字列の表現を返す。

newIdメソッドを使うと長さを指定したランダムなbyte列を持つIdオブジェクトを生成できる。 immutableなオブジェクトとして振舞う。

関連項目:
直列化された形式
  • フィールドの概要

    フィールド 
    修飾子とタイプ フィールド 説明
    protected byte[] bytes
    Idオブジェクトを表現するbyte列。
    protected String strVal
    Idオブジェクトを文字列を使って生成した場合に保持される値。
  • コンストラクタの概要

    コンストラクタ 
    コンストラクタ 説明
    Id​(byte[] bytes)
    指定されたbyte列を値として持つIdオブジェクトを生成する。
    Id​(String str)
    指定された文字列を値として持つIdオブジェクトを生成する。
  • メソッドの概要

    修飾子とタイプ メソッド 説明
    byte[] _getBytes()
    Idオブジェクトの内部表現であるbyte列を返す。
    int commonPostfixLen​(Id id)  
    int commonPrefixLen​(Id id)  
    int compareTo​(Id id)  
    boolean equals​(Object o)  
    int getByteLen()  
    byte[] getBytes()
    Idオブジェクトの内部表現であるbyte列を返す。
    int hashCode()  
    static Id newId​(int len)
    指定された長さのランダムなbyte列を持つIdオブジェクトを生成する。
    protected static byte[] newRandomBytes​(int len)
    指定された長さのランダムなbyte列を生成する。
    boolean testBit​(int ix)  
    String toBinaryString()
    Idを2進表記した文字列を返す。
    String toHexString()
    Idを16進表記した文字列を返す。
    String toString()
    Idの文字列表現を返す。

    クラスから継承されたメソッド java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • フィールド詳細

    • bytes

      protected final byte[] bytes
      Idオブジェクトを表現するbyte列。immutableな使い方を前提にしている。 文字列を使ってIdオブジェクトを生成した場合も、このbyte列はUTF-8のエンコーディングを使って生成される。

      継承したクラス内でこのbyte列を変更するのは構わないが、その場合は、hashCodeをキャッシュしている hash変数を0クリアする必要がある。

    • strVal

      protected final String strVal
      Idオブジェクトを文字列を使って生成した場合に保持される値。
  • コンストラクタの詳細

    • Id

      public Id​(byte[] bytes)
      指定されたbyte列を値として持つIdオブジェクトを生成する。
      パラメータ:
      bytes - byte列
    • Id

      public Id​(String str) throws IllegalArgumentException
      指定された文字列を値として持つIdオブジェクトを生成する。 指定された文字列は7bit ASCII文字列でないといけない。
      パラメータ:
      str - 文字列
      例外:
      IllegalArgumentException - ASCII文字列でない場合
  • メソッドの詳細

    • newRandomBytes

      protected static byte[] newRandomBytes​(int len)
      指定された長さのランダムなbyte列を生成する。 サブクラスでの使用を前提とする。
      パラメータ:
      len - byte列の長さ
      戻り値:
      長さlenのランダムなbyte列
    • newId

      public static Id newId​(int len)
      指定された長さのランダムなbyte列を持つIdオブジェクトを生成する。
      パラメータ:
      len - byte列の長さ
      戻り値:
      長さlenのランダムなbyte列を持つIdオブジェクト
    • getBytes

      public byte[] getBytes()
      Idオブジェクトの内部表現であるbyte列を返す。 返り値であるbyte列が変更されてもよいように、ここでは内部表現のbyte列のコピーを返す。
      戻り値:
      Idオブジェクトの内部表現であるbyte列
    • _getBytes

      public byte[] _getBytes()
      Idオブジェクトの内部表現であるbyte列を返す。 内部で保持するbyte列をコピーせずにそのまま返すので、このメソッドを使う側ではbyte列の内容を 変更しないよう配慮する必要がある。
      戻り値:
      Idオブジェクトの内部表現であるbyte列
    • getByteLen

      public int getByteLen()
    • testBit

      public boolean testBit​(int ix)
    • commonPostfixLen

      public int commonPostfixLen​(Id id)
    • commonPrefixLen

      public int commonPrefixLen​(Id id)
    • hashCode

      public int hashCode()
      オーバーライド:
      hashCode クラス内 Object
    • equals

      public boolean equals​(Object o)
      オーバーライド:
      equals クラス内 Object
    • compareTo

      public int compareTo​(Id id)
      定義:
      compareTo インタフェース内 Comparable<Id>
    • toBinaryString

      public String toBinaryString()
      Idを2進表記した文字列を返す。 文字列表現において、byteの切れ目には"_"が挿入される。
      戻り値:
      Idを2進表記した文字列
    • toHexString

      public String toHexString()
      Idを16進表記した文字列を返す。
      戻り値:
      Idを16進表記した文字列
    • toString

      public String toString()
      Idの文字列表現を返す。

      文字列を元にIdオブジェクトが生成されている場合は、元の文字列を返す。 Idの持つbyte列が7bitのASCII列である場合も文字列として返す。 それ以外の場合は、16進数の表現で返す。

      オーバーライド:
      toString クラス内 Object
      戻り値:
      Idの文字列表現