/**
* JSON ARRAY型Valueを表す。
- * 子要素の配列リストを反映する。
- * <h1>表記例</h1>
+ *
+ * <p>子要素の配列リストを反映する。
+ *
+ * <p>表記例
+ *
* <pre>
* [
* true ,
/**
* JSON文字列ソースからARRAY型Valueを読み込む。
- * さらに子Valueへとパース解析が進む可能性がある。
+ *
+ * <p>さらに子Valueへとパース解析が進む可能性がある。
* 別型の可能性のある先頭文字を読み込んだ場合、
* ソースに文字を読み戻した後nullが返される。
+ *
* @param source 文字列ソース
* @return ARRAY型Value。別型の可能性がある場合はnull。
* @throws IOException 入力エラー
/**
* {@inheritDoc}
- * 常に{@link JsTypes#ARRAY}を返す。
+ *
+ * <p>常に{@link JsTypes#ARRAY}を返す。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* このValueおよび子孫に変更があったか判定する。
- * 子要素の追加・削除が行われたか、
+ *
+ * <p>子要素の追加・削除が行われたか、
* もしくは子要素のいずれかに変更が認められれば、
* このARRAY型Valueに変更があったとみなされる。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* 深さ優先探索を行い各種構造の出現をビジターに通知する。
- * thisを通知した後、子Valueを順に訪問し、最後に閉じ括弧を通知する。
+ *
+ * <p>thisを通知した後、子Valueを順に訪問し、最後に閉じ括弧を通知する。
+ *
* @param visitor {@inheritDoc}
* @throws JsVisitException {@inheritDoc}
*/
/**
* 配列要素数を返す。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* 配列が空か判定する。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* ハッシュ値を返す。
- * 全ての子孫Valueのハッシュ値からその都度合成される。高コスト注意!。
+ *
+ * <p>全ての子孫Valueのハッシュ値からその都度合成される。高コスト注意!。
+ *
* @return {@inheritDoc}
* @see java.util.List#hashCode()
*/
/**
* 等価判定を行う。
- * 双方の配列サイズが一致し
+ *
+ * <p>双方の配列サイズが一致し
* その全ての子Valueでのequals()が等価と判断された場合のみ
* 等価と判断される。
+ *
* @param obj {@inheritDoc}
* @return {@inheritDoc}
* @see java.util.List#equals(Object)
/**
* 配列にValueを追加する。
- * 同じJsValueインスタンスを複数回追加することも可能。
+ *
+ * <p>同じJsValueインスタンスを複数回追加することも可能。
+ *
* @param value JSON Value
* @throws NullPointerException 引数がnull
*/
/**
* 配列から指定された位置のValueを返す。
+ *
* @param index 0で始まる配列上の位置
* @return Value JSON Value
* @throws IndexOutOfBoundsException 不正な位置指定
/**
* 配列からValueを削除する。
- * {@link java.util.List#remove(Object)}と異なり、
+ *
+ * <p>{@link java.util.List#remove(Object)}と異なり、
* 削除対象の検索に際して
* {@link java.lang.Object#equals(Object)}は使われない。
- * 一致するインスタンスが複数存在する場合、
+ *
+ * <p>一致するインスタンスが複数存在する場合、
* 先頭に近いインスタンスのみ削除される。
* 一致するインスタンスが存在しなければなにもしない。
+ *
* @param value JSON Value
* @return 既存のValueが削除されたならtrue
*/
/**
* 配列から指定位置のValueを削除する。
+ *
* @param index 0で始まる削除対象のインデックス値
* @return 削除されたValue
* @throws IndexOutOfBoundsException 不正なインデックス値
/**
* Valueにアクセスするための反復子を提供する。
- * この反復子での削除作業はできない。
+ *
+ * <p>この反復子での削除作業はできない。
+ *
* @return 反復子イテレータ
* @see UnmodIterator
*/
/**
* {@inheritDoc}
- * 文字列表現を返す。
- * JSON表記の全体もしくは一部としての利用も可能。
+ *
+ * <p>文字列表現を返す。
+ *
+ * <p>JSON表記の全体もしくは一部としての利用も可能。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* JSON BOOLEAN型Valueを表す。
- * 真偽値を反映する。
+ *
+ * <p>真偽値を反映する。
* インスタンスは2つしか存在しえない。
- * <h1>表記例</h1>
+ *
+ * <p>表記例
+ *
* <pre>
* true
* false
/**
* 隠しコンストラクタ。
- * 2回しか呼ばれないはず。
+ *
+ * <p>2回しか呼ばれないはず。
*/
private JsBoolean(){
super();
/**
* JSON文字列ソースからBOOLEAN型Valueを読み込む。
- * 別型の可能性のある先頭文字を読み込んだ場合、
+ *
+ * <p>別型の可能性のある先頭文字を読み込んだ場合、
* ソースに文字を読み戻した後nullが返される。
+ *
* @param source 文字列ソース
* @return BOOLEAN型Value。別型の可能性がある場合はnull。
* @throws IOException 入力エラー
/**
* {@inheritDoc}
- * 常に{@link JsTypes#BOOLEAN}を返す。
+ *
+ * <p>常に{@link JsTypes#BOOLEAN}を返す。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* 各種構造の出現をビジターに通知する。
- * この実装ではthisの出現のみを通知する。
+ *
+ * <p>この実装ではthisの出現のみを通知する。
+ *
* @param visitor {@inheritDoc}
* @throws JsVisitException {@inheritDoc}
*/
/**
* {@inheritDoc}
- * ハッシュ値を返す。
+ *
+ * <p>ハッシュ値を返す。
* 真なら{@link #HASH_TRUE}、偽なら{@link #HASH_FALSE}を返す。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* {@inheritDoc}
- * 等価判定を行う。
+ *
+ * <p>等価判定を行う。
+ *
* @param obj {@inheritDoc}
* @return {@inheritDoc}
*/
/**
* {@inheritDoc}
- * BOOLEAN型Valueを順序付ける。
+ *
+ * <p>BOOLEAN型Valueを順序付ける。
* ({@link #TRUE}、{@link #FALSE})の順に順序付けられる。
+ *
* @param value {@inheritDoc}
* @return {@inheritDoc}
* @throws NullPointerException 引数がnull
/**
* boolean値を反映したBOOLEAN型Valueを返す。
+ *
* @param bool boolean値
* @return BOOLEAN型Value
*/
/**
* boolean値を返す。
+ *
* @return boolean値
*/
public boolean booleanValue(){
/**
* 真か判定する。
+ *
* @return 真ならtrue
*/
public boolean isTrue(){
/**
* 偽か判定する。
+ *
* @return 偽ならtrue
*/
public boolean isFalse(){
/**
* 文字列表現を返す。
- * JSON表記の一部としての利用も可能。
+ *
+ * <p>JSON表記の一部としての利用も可能。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* 子要素を持つJSON型の抽象インタフェース。
- * JSON最上位構造であるための必要条件。
- * 子要素を持ちうるJSON型はOBJECT型かARRAY型のみ。
+ *
+ * <p>JSON最上位構造であるための必要条件。
+ *
+ * <p>子要素を持ちうるJSON型はOBJECT型かARRAY型のみ。
+ *
* @param <E> 反復子の要素型
*/
public interface JsComposition<E> extends JsValue, Iterable<E> {
/**
* 要素数を返す。
+ *
* <p>OBJECT型の場合は直下のPAIR総数。</p>
+ *
* <p>ARRAY型の場合は直下の子要素総数。</p>
+ *
* @return 要素数
*/
int size();
/**
* 子要素が空か否か判定する。
+ *
* @return 要素がなければtrue
*/
boolean isEmpty();
/**
* このValueおよび子孫に変更があったか判定する。
- * Value生成直後はfalseでなければならない。
- * ロードしたデータに対し
+ *
+ * <p>Value生成直後はfalseでなければならない。
+ *
+ * <p>ロードしたデータに対し
* 再セーブの必要があるかどうかの判定などを目的とする。
- * <p>変更が可能なValueはOBJECT型かARRAY型のみ。</p>
+ *
+ * <p>変更が可能なValueはOBJECT型かARRAY型のみ。
+ *
* @return 変更があればtrue
*/
boolean hasChanged();
/**
* JSON NULL型Valueを表す。
- * Javaのnullとは一切無関係。
+ *
+ * <p>Javaのnullとは一切無関係。
* その実体はシングルトン。
- * <h1>表記例</h1>
+ *
+ * <p>表記例
+ *
* <pre>
* null
* </pre>
/**
* 隠しコンストラクタ。
- * 1回しか呼ばれないはず
+ *
+ * <p>1回しか呼ばれないはず
*/
private JsNull(){
super();
/**
* JSON文字列ソースからNULL型Valueを読み込む。
- * 別型の可能性のある先頭文字を読み込んだ場合、
+ *
+ * <p>別型の可能性のある先頭文字を読み込んだ場合、
* ソースに文字を読み戻した後nullが返される。
+ *
* @param source 文字列ソース
* @return NULL型Value。別型の可能性がある場合はnull。
* @throws IOException 入力エラー
/**
* {@inheritDoc}
- * 常に{@link JsTypes#NULL}を返す。
+ *
+ * <p>常に{@link JsTypes#NULL}を返す。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* 各種構造の出現をビジターに通知する。
- * この実装ではthisの出現のみを通知する。
+ *
+ * <p>この実装ではthisの出現のみを通知する。
+ *
* @param visitor {@inheritDoc}
* @throws JsVisitException {@inheritDoc}
*/
/**
* {@inheritDoc}
- * ハッシュ値を返す。
+ *
+ * <p>ハッシュ値を返す。
* 常に{@value ONLYHASH}を返す。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* {@inheritDoc}
- * 等価判定を行う。
+ *
+ * <p>等価判定を行う。
* {@link #NULL}が渡された時のみtrueを返す。
+ *
* @param obj {@inheritDoc}
* @return {@inheritDoc}
*/
/**
* {@inheritDoc}
- * NULL型Valueを順序付ける。シングルトン相手にほぼ無意味。
+ *
+ * <p>NULL型Valueを順序付ける。シングルトン相手にほぼ無意味。
* null以外の引数には必ず0を返す。
+ *
* @param value {@inheritDoc}
* @return {@inheritDoc}
* @throws NullPointerException 引数がnull
/**
* {@inheritDoc}
- * 文字列表現を返す。
+ *
+ * <p>文字列表現を返す。
* 常に文字列 {@value TEXT} を返す。
* JSON表記の一部としての利用も可能。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* JSON NUMBER型Valueを表す。
- * 整数、実数を含めた数値を反映する。
- * <p>
- * 10を基数とした{@link java.math.BigDecimal}を実装ベースとする。
+ *
+ * <p>整数、実数を含めた数値を反映する。
+ *
+ * <p>10を基数とした{@link java.math.BigDecimal}を実装ベースとする。
* ※ IEEE754浮動小数ではない。
- * </p>
- * <p>(1)と(1.0)はスケール値によって区別される</p>
- * <h1>表記例</h1>
+ *
+ * <p>(1)と(1.0)はスケール値によって区別される
+ *
+ * <p>表記例
+ *
* <pre>
* -43
* 0.56
* 3.23E-06
* </pre>
+ *
* @see java.math.BigDecimal
*/
public class JsNumber
/**
* コンストラクタ。
+ *
* @param val 初期整数値
*/
public JsNumber(long val){
/**
* コンストラクタ。
- * <p>
- * {@link java.math.BigDecimal#valueOf(double)}と同等の丸めが行われる。
- * (1.0/10.0)を渡すと0.1相当になる。
- * 必要に応じて{@link java.math.BigDecimal}を
+ *
+ * <p>{@link java.math.BigDecimal#valueOf(double)}と同等の丸めが行われる。
+ *
+ * <p>(1.0/10.0)を渡すと0.1相当になる。
+ *
+ * <p>必要に応じて{@link java.math.BigDecimal}を
* 引数に持つコンストラクタと使い分けること。
- * </p>
+ *
* @param val 初期実数値
* @see java.math.BigDecimal#valueOf(double)
*/
/**
* コンストラクタ。
+ *
* @param val 初期整数値
* @throws ArithmeticException 正確な結果を
- * {@link java.math.BigDecimal}に納め切れない
+ * {@link java.math.BigDecimal}に納め切れない
*/
public JsNumber(BigInteger val) throws ArithmeticException{
this(new BigDecimal(val, DEF_MC));
/**
* コンストラクタ。
- * 書式は{@link java.math.BigDecimal#BigDecimal(String)}に準ずる。
+ *
+ * <p>書式は{@link java.math.BigDecimal#BigDecimal(String)}に準ずる。
+ *
* @param val 初期数値の文字列表記
* @throws NumberFormatException 不正な数値表記
* @throws ArithmeticException 正確な結果を
- * {@link java.math.BigDecimal}に納め切れない
+ * {@link java.math.BigDecimal}に納め切れない
+ *
* @see java.math.BigDecimal#BigDecimal(String)
*/
public JsNumber(CharSequence val)
/**
* コンストラクタ。
+ *
* @param val 初期数値
* @throws NullPointerException 引数がnull
*/
/**
* 任意の文字がUnicodeのBasic-Latinの数字か否か判定する。
+ *
* @param ch 文字
* @return 数字ならtrue
+ *
* @see java.lang.Character#isDigit(char)
*/
public static boolean isLatinDigit(char ch){
/**
* 文字ソースから符号付きの数字並びを読み込む。
- * 先頭'+'符号は読み飛ばされる。
+ *
+ * <p>先頭'+'符号は読み飛ばされる。
* 冒頭のゼロ'0'に続く数字を許すか否か指定が可能。
- * <p>NUMBER型表記の整数部、小数部、指数部読み込みの下請けメソッド。</p>
+ *
+ * <p>NUMBER型表記の整数部、小数部、指数部読み込みの下請けメソッド。
+ *
* @param source 文字列ソース
* @param app 出力先
* @param allowZeroTrail 冒頭のゼロ'0'に続く数字を許すならtrue
/**
* 文字ソースから、ピリオド「.」で始まるNUMBER型小数部を読み込む。
- * 小数部がなければなにもせずに戻る。
+ *
+ * <p>小数部がなければなにもせずに戻る。
+ *
* @param source 文字列ソース
* @param app 出力先
* @return 引数と同じ出力先
/**
* 文字ソースから「e」もしくは「E」で始まるNUMBER型指数部を読み込む。
- * 指数部がなければなにもせずに戻る。
+ *
+ * <p>指数部がなければなにもせずに戻る。
+ *
* @param source 文字列ソース
* @param app 出力先
* @return 引数と同じ出力先
/**
* JSON文字列ソースからNUMBER型Valueを読み込む。
- * 別型の可能性のある先頭文字を読み込んだ場合、
+ *
+ * <p>別型の可能性のある先頭文字を読み込んだ場合、
* ソースに文字を読み戻した後nullが返される。
+ *
* @param source 文字列ソース
* @return NUMBER型Value。別型の可能性がある場合はnull。
* @throws IOException 入力エラー
/**
* {@inheritDoc}
- * 常に{@link JsTypes#NUMBER}を返す。
+ *
+ * <p>常に{@link JsTypes#NUMBER}を返す。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* 各種構造の出現をビジターに通知する。
- * この実装ではthisの出現のみを通知する。
+ *
+ * <p>この実装ではthisの出現のみを通知する。
+ *
* @param visitor {@inheritDoc}
* @throws JsVisitException {@inheritDoc}
*/
/**
* {@inheritDoc}
- * ハッシュ値を返す。
+ *
+ * <p>ハッシュ値を返す。
* {@link java.math.BigDecimal#hashCode()}と同じ値を返す。
+ *
* @return {@inheritDoc}
+ *
* @see java.math.BigDecimal#hashCode()
*/
@Override
/**
* {@inheritDoc}
- * 等価判定を行う。
+ *
+ * <p>等価判定を行う。
* {@link java.math.BigDecimal#equals(Object)}と同等の判断が行われる。
- * 「1.2」と「0.12E+1」など、
+ *
+ * <p>「1.2」と「0.12E+1」など、
* スケールの一致しない値は異なる値と見なされる。
+ *
* @param obj {@inheritDoc}
* @return {@inheritDoc}
+ *
* @see java.math.BigDecimal#equals(Object)
*/
@Override
/**
* {@inheritDoc}
- * NUMBER型Valueを昇順に順序付ける。
- * 「1.2」と「0.12E+1」など、スケールが異なっても値が同じであれば
+ *
+ * <p>NUMBER型Valueを昇順に順序付ける。
+ *
+ * <p>「1.2」と「0.12E+1」など、スケールが異なっても値が同じであれば
* 等しい値と見なされる。
+ *
* @param value {@inheritDoc}
* @return {@inheritDoc}
+ *
* @see java.math.BigDecimal#compareTo(BigDecimal)
*/
@Override
/**
* int型の数値を返す。
- * 情報が失われる可能性がある。
+ *
+ * <p>情報が失われる可能性がある。
+ *
* @return int型数値
+ *
* @see java.lang.Number#intValue()
* @see java.math.BigDecimal#intValue()
*/
/**
* long型の数値を返す。
- * 情報が失われる可能性がある。
+ *
+ * <p>情報が失われる可能性がある。
+ *
* @return long型数値
+ *
* @see java.lang.Number#longValue()
* @see java.math.BigDecimal#longValue()
*/
/**
* float型の数値を返す。
- * 情報が失われる可能性がある。
+ *
+ * <p>情報が失われる可能性がある。
+ *
* @return float型数値
+ *
* @see java.lang.Number#floatValue()
* @see java.math.BigDecimal#floatValue()
*/
/**
* double型の数値を返す。
- * 情報が失われる可能性がある。
+ *
+ * <p>情報が失われる可能性がある。
+ *
* @return double型数値
+ *
* @see java.lang.Number#doubleValue()
* @see java.math.BigDecimal#doubleValue()
*/
/**
* {@link java.math.BigDecimal}型の数値表現を返す。
+ *
* @return BigDecimal型数値
*/
public BigDecimal decimalValue(){
/**
* スケール値を返す。
- * このインスタンスが整数文字列表記に由来する場合、
+ *
+ * <p>このインスタンスが整数文字列表記に由来する場合、
* スケール値は0になるはず。
*
* <ul>
* </ul>
*
* @return スケール値
+ *
* @see java.math.BigDecimal#scale()
*/
public int scale(){
/**
* 文字列表現を返す。
- * {@link java.math.BigDecimal#toString()}に準ずる。
+ *
+ * <p>{@link java.math.BigDecimal#toString()}に準ずる。
* JSON表記の一部としての利用も可能。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* JSON OBJECT型Valueを表す。
- * PAIR名と子要素の組(PAIR)の集合を反映する。
+ *
+ * <p>PAIR名と子要素の組(PAIR)の集合を反映する。
* PAIR名の並び順に関しては未定義とする。
- * <h1>表記例</h1>
+ *
+ * <p>表記例
+ *
* <pre>
* {
* "Name" : "Joe" ,
/**
* JSON文字列ソースからOBJECT型Valueを読み込む。
- * さらに子Valueへとパース解析が進む可能性がある。
- * 別型の可能性のある先頭文字を読み込んだ場合、
+ *
+ * <p>さらに子Valueへとパース解析が進む可能性がある。
+ *
+ * <p>別型の可能性のある先頭文字を読み込んだ場合、
* ソースに文字を読み戻した後nullが返される。
+ *
* @param source 文字列ソース
* @return OBJECT型Value。別型の可能性がある場合はnull。
* @throws IOException 入力エラー
/**
* {@inheritDoc}
- * 常に{@link JsTypes#OBJECT}を返す。
+ *
+ * <p>常に{@link JsTypes#OBJECT}を返す。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* このValueおよび子孫に変更があったか判定する。
- * PAIRの追加・削除が行われたか、
+ *
+ * <p>PAIRの追加・削除が行われたか、
* もしくはPAIRのValue値いずれかに変更が認められれば、
* このOBJECT型Valueに変更があったとみなされる。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* 深さ優先探索を行い各種構造の出現をビジターに通知する。
- * thisを通知した後、PAIRの各名前およびValueを順に訪問し、
+ *
+ * <p>thisを通知した後、PAIRの各名前およびValueを順に訪問し、
* 最後に閉じ括弧を通知する。
- * PAIRの訪問順に関しては未定義。
+ *
+ * <p>PAIRの訪問順に関しては未定義。
+ *
* @param visitor {@inheritDoc}
* @throws JsVisitException {@inheritDoc}
*/
/**
* PAIR総数を返す。
+ *
* @return PAIR総数
*/
@Override
/**
* PAIR集合が空か判定する。
+ *
* @return 空ならtrue
*/
@Override
/**
* ハッシュ値を返す。
- * 全てのPAIRのハッシュ値からその都度合成される。高コスト注意!。
+ *
+ * <p>全てのPAIRのハッシュ値からその都度合成される。高コスト注意!。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* 等価判定を行う。
- * 双方のPAIR数が一致し、
+ *
+ * <p>双方のPAIR数が一致し、
* 全てのPAIR名およびそれに対応付けられたValueが一致した場合のみ
* 等価と判断される。
+ *
* @param obj {@inheritDoc}
* @return {@inheritDoc}
*/
/**
* 名前とValueからPAIRを登録する。
+ *
* @param name 名前
* @param value Value
* @return 旧Value。同じ内容のPAIRがすでに存在していたらnull
/**
* PAIR名からValueを取得する。
+ *
* @param name PAIR名
* @return 対応するValue。見つからなければnull
*/
/**
* PAIRを追加する。
- * 同じPAIR名を持つPAIRは無条件に上書きされる。
+ *
+ * <p>同じPAIR名を持つPAIRは無条件に上書きされる。
+ *
* @param pair PAIR
*/
public void putPair(JsPair pair){
/**
* PAIR名からPAIRを返す。
+ *
* @param name PAIR名
* @return PAIR。見つからなければnull
*/
/**
* 指定した名前のPAIRを削除する。
+ *
* @param name PAIR名
* @return 消されたPAIR。該当するPAIRがなければnull
*/
/**
* 保持する全PAIRのPAIR名の集合を返す。
+ *
* @return すべての名前
*/
public Set<String> nameSet(){
/**
* PAIRのリストを返す。
- * このリストを上書き操作しても影響はない。
+ *
+ * <p>このリストを上書き操作しても影響はない。
+ *
* @return PAIRリスト
*/
public List<JsPair> getPairList(){
/**
* PAIRにアクセスするための反復子を提供する。
- * この反復子での削除作業はできない。
+ *
+ * <p>この反復子での削除作業はできない。
* PAIR出現順序は未定義。
+ *
* @return 反復子イテレータ
*/
@Override
/**
* 文字列表現を返す。
- * JSON表記の全体もしくは一部としての利用も可能。
+ *
+ * <p>JSON表記の全体もしくは一部としての利用も可能。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* OBJECT型Value内に列挙される、名前の付いたValueとの組(PAIR)。
- * PAIRはValueではない。
+ *
+ * <p>PAIRはValueではない。
*
* <pre>
* {
/**
* コンストラクタ。
+ *
* @param name PAIR名
* @param value PAIR名に対応付けられるValue
* @throws NullPointerException 引数のいずれかがnull
/**
* コンストラクタ。
- * STRING型をValueに持つPAIRが生成される。
+ *
+ * <p>STRING型をValueに持つPAIRが生成される。
+ *
* @param name PAIR名
* @param text PAIR名に対応付けられる文字列データ。
- * エスケープされる前段階の表記。
+ * エスケープされる前段階の表記。
* @throws NullPointerException 引数がnull
*/
public JsPair(String name, CharSequence text)
/**
* コンストラクタ。
- * BOOLEAN型をValueに持つPAIRが生成される。
+ *
+ * <p>BOOLEAN型をValueに持つPAIRが生成される。
+ *
* @param name PAIR名
* @param bool PAIR名に対応付けられる真偽値
* @throws NullPointerException PAIR名がnull
/**
* コンストラクタ。
- * NUMBER型をValueに持つPAIRが生成される。
+ *
+ * <p>NUMBER型をValueに持つPAIRが生成される。
+ *
* @param name PAIR名
* @param number PAIR名に対応付けられる整数値
* @throws NullPointerException PAIR名がnull
/**
* コンストラクタ。
- * NUMBER型をValueに持つPAIRが生成される。
+ *
+ * <p>NUMBER型をValueに持つPAIRが生成される。
+ *
* @param name PAIR名
* @param number PAIR名に対応付けられる実数値
* @throws NullPointerException PAIR名がnull
/**
* PAIR名を返す。
+ *
* @return PAIR名
*/
public String getName(){
/**
* Valueを返す。
+ *
* @return Value
*/
public JsValue getValue(){
/**
* {@inheritDoc}
- * ハッシュ値を返す。
- * PAIR名とValue双方のハッシュ値から合成される。
+ *
+ * <p>ハッシュ値を返す。
+ *
+ * <p>PAIR名とValue双方のハッシュ値から合成される。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* {@inheritDoc}
- * 等価判定を行う。
- * PAIR名とValue双方が一致する場合のみ真となる。
+ *
+ * <p>等価判定を行う。
+ *
+ * <p>PAIR名とValue双方が一致する場合のみ真となる。
+ *
* @param obj {@inheritDoc}
* @return {@inheritDoc}
*/
/**
* 文字列表現を返す。
- * JSON表記の一部としての利用も可能。
+ *
+ * <p>JSON表記の一部としての利用も可能。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* 入力文字列パース中断例外。
- * JSON文字列ソースへのパース処理の中断時に投げられる。
+ *
+ * <p>JSON文字列ソースへのパース処理の中断時に投げられる。
*/
@SuppressWarnings("serial")
public class JsParseException extends Exception {
/**
* コンストラクタ。
+ *
* @param message 詳細メッセージ。不明な場合はnull
* @param lineNumber 行番号。不明な場合は0以下の値
*/
/**
* コンストラクタ。
+ *
* @param message 詳細メッセージ。不明な場合はnull
* @param cause 原因となった例外。不明な場合はnull
* @param lineNumber 行番号。不明な場合は0以下の値
/**
* パースエラーの起きた行番号を返す。
+ *
* @return 行番号。不明な場合は0以下の値。
*/
public int getLineNumber(){
/**
* 有効な行番号を保持しているか判定する。
+ *
* @return 有効な行番号(1以上)を保持していればtrue
*/
public boolean hasValidLineNumber(){
/**
* {@inheritDoc}
- * 有効な行番号があれば一緒に出力される。
+ *
+ * <p>有効な行番号があれば一緒に出力される。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* JSON STRING型Valueを表す。
- * Unicode文字列データを反映する。
- * <h1>表記例</h1>
+ *
+ * <p>Unicode文字列データを反映する。
+ *
+ * <p>表記例
+ *
* <pre>
* "xyz"
* "漢"
/**
* コンストラクタ。
- * 長さ0の空文字が設定される。
+ *
+ * <p>長さ0の空文字が設定される。
*/
public JsString(){
this("");
/**
* コンストラクタ。
- * 引数はJSON書式ではない生文字列。
+ *
+ * <p>引数はJSON書式ではない生文字列。
+ *
* @param rawSeq 生文字列
* @throws NullPointerException 引数がnull
*/
/**
* FFFF形式4桁で16進エスケープされた文字列を読み、
* char1文字にデコードする。
+ *
* @param source 文字列ソース
* @return 文字
* @throws IOException 入力エラー
/**
* '\'に続くスペシャルキャラの読み込みを行う。
+ *
* @param source 文字列ソース
* @param app スペシャルキャラ格納文字列
* @throws IOException 入出力エラー
* @throws JsParseException "\z"などの不正なスペシャルキャラ
- * もしくは意図しない入力終了
+ * もしくは意図しない入力終了
*/
private static void parseSpecial(JsonSource source, Appendable app)
throws IOException, JsParseException{
/**
* JSON文字列ソースからSTRING型Valueを読み込む。
- * 別型の可能性のある先頭文字を読み込んだ場合、
+ *
+ * <p>別型の可能性のある先頭文字を読み込んだ場合、
* ソースに文字を読み戻した後nullが返される。
+ *
* @param source 文字列ソース
* @return STRING型Value。別型の可能性がある場合はnull。
* @throws IOException 入力エラー
/**
* 任意の文字からエスケープ出力用シンボルを得る。
- * このシンボルは'\'に続けて用いられる1文字である。
+ *
+ * <p>このシンボルは'\'に続けて用いられる1文字である。
* 'u'を返す事はありえない。
+ *
* @param ch 任意の文字
* @return エスケープ出力用シンボル。
- * 1文字エスケープの必要がない場合は'\0'
+ * 1文字エスケープの必要がない場合は'\0'
*/
private static char escapeSymbol(char ch){
char result;
/**
* 特殊文字をエスケープ出力する。
- * 特殊文字でなければなにもしない。
+ *
+ * <p>特殊文字でなければなにもしない。
+ *
* @param appout 出力先
* @param ch 文字
* @return 特殊文字出力がエスケープされた時にtrue
/**
* JSON STRING型Value形式で文字列を出力する。
+ *
* @param appout 文字出力
* @param seq 文字列
* @throws IOException 出力エラー
/**
* JSON STRING型Value形式の文字列を返す。
+ *
* @param seq 生文字列
* @return STRING型表記に変換された文字列
*/
/**
* {@inheritDoc}
- * 常に{@link JsTypes#STRING}を返す。
+ *
+ * <p>常に{@link JsTypes#STRING}を返す。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* 各種構造の出現をビジターに通知する。
- * この実装ではthisの出現のみを通知する。
+ *
+ * <p>この実装ではthisの出現のみを通知する。
+ *
* @param visitor {@inheritDoc}
* @throws JsVisitException {@inheritDoc}
*/
/**
* {@inheritDoc}
- * ハッシュ値を返す。
+ *
+ * <p>ハッシュ値を返す。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* {@inheritDoc}
- * 等価判定を行う。
- * {@link java.lang.String#equals(Object)}に準ずる。
+ *
+ * <p>等価判定を行う。
+ *
+ * <p>{@link java.lang.String#equals(Object)}に準ずる。
+ *
* @param obj {@inheritDoc}
* @return {@inheritDoc}
*/
/**
* {@inheritDoc}
- * STRING型Valueを昇順に順序付ける。
- * {@link java.lang.String#compareTo(String)}に準ずる。
+ *
+ * <p>STRING型Valueを昇順に順序付ける。
+ *
+ * <p>{@link java.lang.String#compareTo(String)}に準ずる。
+ *
* @param value {@inheritDoc}
* @return {@inheritDoc}
*/
/**
* {@inheritDoc}
- * 指定位置の文字を返す。
+ *
+ * <p>指定位置の文字を返す。
+ *
* @param index {@inheritDoc}
* @return {@inheritDoc}
* @throws IndexOutOfBoundsException {@inheritDoc}
/**
* {@inheritDoc}
- * 文字列長(char値総数)を返す。
+ *
+ * <p>文字列長(char値総数)を返す。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* {@inheritDoc}
- * 部分文字列を返す。
+ *
+ * <p>部分文字列を返す。
+ *
* @param start {@inheritDoc}
* @param end {@inheritDoc}
* @return {@inheritDoc}
/**
* クォーテーションやエスケープ処理の施されていない生の文字列を返す。
+ *
* @return 生の文字列
*/
public String toRawString(){
/**
* {@inheritDoc}
- * クォーテーションとエスケープ処理の施された文字列表記を生成する。
+ *
+ * <p>クォーテーションとエスケープ処理の施された文字列表記を生成する。
* JSON表記の一部としての利用も可能。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* コンストラクタ。
+ *
* @param klass {@link java.lang.Class}型
*/
private JsTypes(Class<? extends JsValue> klass){
/**
* {@link java.lang.Class}型から対応する型列挙を返す。
+ *
* @param carg 任意のjava.lang.Class型変数
* @return 型列挙。JSON型に由来しないクラスが指定されたときはnull
* @throws NullPointerException 引数がnull
/**
* 対応する{@link java.lang.Class}型を返す。
+ *
* @return java.lang.Class型
*/
public Class<? extends JsValue> getJsClass(){
/**
* このJSON型が子要素を持ちうるか判定する。
- * 子要素を持ちうるJSON型はOBJECT型かARRAY型のみ。
+ *
+ * <p>子要素を持ちうるJSON型はOBJECT型かARRAY型のみ。
+ *
* @return 子要素を持ちうるならtrue
*/
public boolean isComposition(){
/**
* 対応するJSON型列挙を返す。
+ *
* @return JSON型列挙
*/
JsTypes getJsTypes();
/**
* 深さ優先探索を行い各種構造の出現をビジターに通知する。
+ *
* @param visitor ビジター
* @throws JsVisitException ビジターにより
- * トラバース中断が判断された時に投げられる。
+ * トラバース中断が判断された時に投げられる。
*/
void traverse(ValueVisitor visitor) throws JsVisitException;
/**
* トラバース中断例外。
- * JSONツリー構造のトラバース処理の中断時に投げられる。
- * <p>
- * トラバース処理内部でIOExceptionなどのチェック例外が発生した場合、
+ *
+ * <p>JSONツリー構造のトラバース処理の中断時に投げられる。
+ *
+ * <p>トラバース処理内部でIOExceptionなどのチェック例外が発生した場合、
* チェーン例外機構({@link java.lang.Throwable#getCause()} etc.)
* を用いるのが望ましい。
- * </p>
*/
@SuppressWarnings("serial")
public class JsVisitException extends Exception {
/**
* コンストラクタ。
+ *
* @param message 詳細メッセージ。不明な場合はnull
*/
public JsVisitException(String message){
/**
* コンストラクタ。
+ *
* @param message 詳細メッセージ。不明な場合はnull
* @param cause 原因となった例外。不明な場合はnull
*/
/**
* コンストラクタ。
+ *
* @param cause 原因となった例外。不明な場合はnull
*/
public JsVisitException(Throwable cause){
/**
* JSON最上位構造から文字出力を開始する。
+ *
* @param appout 出力先
* @param topValue OBJECT型かARRAY型のValue
* @throws NullPointerException 引数がnull
/**
* JSONの各種Valueを文字ソースから読み取る。
+ *
* @param source 文字入力
* @return 各種Value。
- * 0個以上連続するホワイトスペースと共にソースの終わりに達したときはnull
+ * 0個以上連続するホワイトスペースと共にソースの終わりに達したときはnull
* @throws IOException 入力エラー
* @throws JsParseException パースエラー
*/
/**
* JSONの最上位構造を文字ソースから読み取る。
+ *
* @param source 文字入力ソース
* @return JSON最上位構造。OBJECT型かARRAY型のいずれか。
- * 入力が0個以上のホワイトスペースのみで埋められていた場合はnull。
+ * 入力が0個以上のホワイトスペースのみで埋められていた場合はnull。
* @throws IOException 入力エラー
* @throws JsParseException パースエラー
*/
/**
* JSONの最上位構造を文字リーダから読み取る。
+ *
* @param source 文字入力リーダ
* @return JSON最上位構造。OBJECT型かARRAY型のいずれか。
- * 入力が0個以上のホワイトスペースのみで埋められていた場合はnull。
+ * 入力が0個以上のホワイトスペースのみで埋められていた場合はnull。
* @throws IOException 入力エラー
* @throws JsParseException パースエラー
*/
/**
* JSON文字出力用ビジター。
- * <p>
- * JSON Valueのトラバース時にこのビジターを指定すると、
+ *
+ * <p>JSON Valueのトラバース時にこのビジターを指定すると、
* 事前に用意した文字出力先にJSONフォーマットで出力される。
- * </p>
- * <p>
- * 出力に伴う{@link java.io.IOException}は
+ *
+ * <p>出力に伴う{@link java.io.IOException}は
* {@link JsVisitException}のチェーン例外となる。
- * </p>
- * <p>
- * 前回パースの成功/失敗に関わらず、
+ *
+ * <p>前回パースの成功/失敗に関わらず、
* インスタンスの再利用時の挙動は保証されない。
- * </p>
*/
class JsonAppender implements ValueVisitor {
/**
* コンストラクタ。
+ *
* @param appout 出力先
* @throws NullPointerException 引数がnull
*/
/**
* コンテキストをプッシュ退避する。
+ *
* @param composition 現在のコンテキスト
*/
protected void pushComposition(JsComposition<?> composition){
/**
* コンテキストをポップ復帰する。
+ *
* @return スタックトップのコンテキスト
* @throws EmptyStackException スタック構造が空
*/
/**
* ネスト構造の深さを返す。
+ *
* @return 0から始まる深さ
*/
protected int nestDepth(){
/**
* ネスト構造が空(深さ0)か判定する。
+ *
* @return 空ならtrue
*/
protected boolean isNestEmpty(){
/**
* ネスト後、一つでも子要素が出力されたか判定する。
+ *
* @return 子要素が出力されていればtrue
*/
protected boolean hasChildDumped(){
/**
* 現在のコンテキストがARRAY型配列要素出力中の状態か否か判定する。
+ *
* @return 現在のコンテキストがARRAY型配列要素出力中ならtrue
*/
protected boolean isArrayContext(){
/**
* 1文字出力。
+ *
* @param ch 文字
* @throws JsVisitException 出力エラー。
+ *
* @see java.lang.Appendable#append(char)
*/
protected void append(char ch) throws JsVisitException{
/**
* 文字列出力。
+ *
* @param seq 文字列
* @throws JsVisitException 出力エラー。
+ *
* @see java.lang.Appendable#append(CharSequence)
*/
protected void append(CharSequence seq) throws JsVisitException{
/**
* 可能であれば出力先をフラッシュする。
+ *
* @throws JsVisitException 出力エラー
+ *
* @see java.io.Flushable
*/
protected void flush() throws JsVisitException{
/**
* トラバース中断の原因となったIOExceptionを返す。
+ *
* @return トラバース中断の原因となったIOException。なければnull。
*/
public IOException getIOException(){
/**
* トラバース中断の原因となったIOExceptionがあるか判定する。
+ *
* @return トラバース中断の原因となったIOExceptionがあればtrue
*/
public boolean hasIOException(){
/**
* pairの名前を出力する。
+ *
* @param name pair名
* @throws JsVisitException 出力エラー
*/
/**
* pair区切りコロンを出力する。
+ *
* @throws JsVisitException 出力エラー
*/
protected void putPairSeparator() throws JsVisitException{
/**
* 要素間区切りコンマを出力する。
- * JSONでは最後の要素の後にコンマを出力してはいけない。
+ *
+ * <p>JSONでは最後の要素の後にコンマを出力してはいけない。
+ *
* @throws JsVisitException 出力エラー
*/
protected void putComma() throws JsVisitException{
/**
* 改行を出力する。
+ *
* @throws JsVisitException 出力エラー。
*/
protected void putNewLine() throws JsVisitException{
/**
* インデントを出力する。
+ *
* @throws JsVisitException 出力エラー
*/
protected void putIndent() throws JsVisitException{
/**
* OBJECT及びARRAY型の最初の要素の前部分を出力する。
+ *
* @throws JsVisitException 出力エラー
*/
protected void putBefore1stElement() throws JsVisitException{
/**
* OBJECT及びARRAY型の要素間区切りを出力する。
+ *
* @throws JsVisitException 出力エラー
*/
protected void putBetweenElement() throws JsVisitException{
/**
* OBJECT及びARRAY型の最後の要素の後部分を出力する。
+ *
* @throws JsVisitException 出力エラー
*/
protected void putAfterLastElement() throws JsVisitException{
/**
* OBJECT及びARRAY型の空要素を出力する。
+ *
* @throws JsVisitException 出力エラー
*/
protected void putEmptyElement() throws JsVisitException{
/**
* パース前の出力を行う。
+ *
* @throws JsVisitException 出力エラー
*/
protected void putBeforeParse() throws JsVisitException{
/**
* パース後の出力を行う。
+ *
* @throws JsVisitException 出力エラー
*/
protected void putAfterParse() throws JsVisitException{
/**
* {@inheritDoc}
- * Valueの出力を行う。
+ *
+ * <p>Valueの出力を行う。
+ *
* @param value {@inheritDoc}
* @throws JsVisitException {@inheritDoc}
*/
/**
* {@inheritDoc}
- * OBJECT内の各pairの名前を出力する。
+ *
+ * <p>OBJECT内の各pairの名前を出力する。
+ *
* @param pairName {@inheritDoc}
* @throws JsVisitException {@inheritDoc}
*/
/**
* {@inheritDoc}
- * 閉じ括弧を出力する。
+ *
+ * <p>閉じ括弧を出力する。
+ *
* @param closed {@inheritDoc}
* @throws JsVisitException {@inheritDoc}
*/
/**
* コンストラクタ。
- * 子要素が出力された事実は無い状態で始まる。
+ *
+ * <p>子要素が出力された事実は無い状態で始まる。
+ *
* @param composition レベルに対応するOBJECTもしくはARRAY型Value
*/
DumpContext(JsComposition<?> composition){
/**
* このレベルに対応するJSON集約型を返す。
+ *
* @return OBJECTもしくはARRAY型Value
*/
JsComposition<?> getComposition(){
/**
* このレベルで子要素出力が行われたか判定する。
+ *
* @return 子要素出力が行われていたならtrue
*/
boolean hasChildDumped(){
/**
* JSONデータ用入力ソース。
- * 先読みした文字のプッシュバック機能と行番号のカウント機能を有する。
- * 行番号は1から始まる。
+ *
+ * <p>先読みした文字のプッシュバック機能と行番号のカウント機能を有する。
+ *
+ * <p>行番号は1から始まる。
* 行と行はLF('\n')で区切られるものとする。(※CRは無視)
+ *
* @see java.io.PushbackReader
* @see java.io.LineNumberReader
*/
/**
* コンストラクタ。
+ *
* @param reader 文字入力リーダー
* @throws NullPointerException 引数がnull
*/
/**
* コンストラクタ。
- * 任意の文字列を入力ソースとする。
+ *
+ * <p>任意の文字列を入力ソースとする。
+ *
* @param text 文字列
+ *
* @see java.io.StringReader
*/
public JsonSource(CharSequence text){
/**
* JSON規格のwhitespace文字を判定する。
+ *
* @param ch 判定対象文字
* @return whitespaceならtrue
*/
/**
* JSON規格のwhitespace文字を判定する。
+ *
* @param ch 判定対象文字。
- * 上位16bitがゼロでなければwhitespaceと判定されない。
+ * 上位16bitがゼロでなければwhitespaceと判定されない。
* @return whitespaceならtrue。引数が負の場合はfalse。
*/
public static boolean isWhitespace(int ch){
/**
* プッシュバック可能な残り文字数を返す。
+ *
* @return プッシュバック可能な残り文字数
*/
public int getPushBackSpared(){
/**
* 現時点での行番号を返す。
+ *
* @return 1から始まる行番号
*/
public int getLineNumber(){
/**
* 1文字読み込む。
+ *
* @return 読み込んだ文字。入力が終わっている場合は負の値。
* @throws IOException 入力エラー
+ *
* @see java.io.Reader#read()
*/
public int read() throws IOException{
/**
* 入力末端ではないと仮定して1文字読み込む。
+ *
* @return 読み込んだ文字。
* @throws IOException 入力エラー
* @throws JsParseException 入力が終わっている
/**
* 入力が文字列とマッチするか判定する。
- * 失敗しても読み戻しは行われない。
+ *
+ * <p>失敗しても読み戻しは行われない。
* 長さ0の文字列は必ずマッチに成功する。
+ *
* @param seq マッチ対象文字列
* @return マッチすればtrue
* @throws IOException 入力エラー
/**
* 1文字読み戻す。
- * 行数カウントへも反映される。
+ *
+ * <p>行数カウントへも反映される。
+ *
* @param ch 読み戻す文字
* @throws IOException バッファあふれもしくはクローズ済み
*/
/**
* 1文字読み戻す。
- * char型にキャストした引数が次回読み込まれる。
- * 行数カウントへも反映される。
+ *
+ * <p>char型にキャストした引数が次回読み込まれる。
+ *
+ * <p>行数カウントへも反映される。
+ *
* @param ch 読み戻す文字。負の符号を含む上位16bitは無視される。
* @throws IOException バッファあふれもしくはクローズ済み
*/
/**
* whitespace文字を読み飛ばす。
+ *
* @throws IOException 入力エラー
*/
public void skipWhiteSpace() throws IOException{
/**
* まだ読み込めるデータがあるか判定する。
+ *
* @return まだ読めるデータがあればtrue
* @throws IOException IO入力エラー
*/
/**
* コンストラクタで指定されたReaderを閉じる。
- * クローズ後の読み込みおよび読み戻し動作は全て例外を投げる。
+ *
+ * <p>クローズ後の読み込みおよび読み戻し動作は全て例外を投げる。
+ *
* @throws IOException 入出力エラー
+ *
* @see java.io.Closeable
*/
@Override
/**
* 既存の{@link java.util.Iterator}および{@link java.lang.Iterable}に対し、
* 削除のできない変更操作不可なIteratorラッパを提供する。
+ *
* @param <E> コレクション内の要素型
*/
public class UnmodIterator<E> implements Iterator<E> {
/**
* コンストラクタ。
+ *
* @param iterator ラップ元Iterator
* @throws NullPointerException 引数がnull
*/
/**
* 削除操作不可なラップIteratorを生成する。
+ *
* @param <E> コレクション内の要素型
* @param iterator ラップ元Iterator
* @return 変更操作不可なIterator
/**
* 削除操作不可なラップIterableを生成する。
+ *
* @param <E> コレクション内の要素型
* @param iterable ラップ元Iterable
* @return 変更操作不可なIteratorを生成するIterable
/**
* Iterableに由来する削除操作不可なラップIteratorを生成する。
+ *
* @param <E> コレクション内の要素型
* @param iterable Iterable
* @return 変更操作不可なIterator
/**
* {@inheritDoc}
- * 反復子に次の要素があるか判定する。
+ *
+ * <p>反復子に次の要素があるか判定する。
+ *
* @return {@inheritDoc}
*/
@Override
/**
* {@inheritDoc}
- * 反復子の次の要素を取得する。
+ *
+ * <p>反復子の次の要素を取得する。
+ *
* @return {@inheritDoc}
* @throws NoSuchElementException これ以上要素はない。
*/
/**
* {@inheritDoc}
- * 必ず失敗し例外を投げる。
+ *
+ * <p>必ず失敗し例外を投げる。
+ *
* @throws UnsupportedOperationException {@inheritDoc}
*/
@Override
/**
* Value登場の通知を受け取る。
+ *
* @param value JSON Value
* @throws JsVisitException ビジターがトラバース中止を判断した際に
- * 投げられる。
+ * 投げられる。
*/
void visitValue(JsValue value) throws JsVisitException;
/**
* OBJECT型内部のPAIR名登場の通知を受け取る。
- * PAIRの示すValueの出現する直前に通知が行われる。
+ *
+ * <p>PAIRの示すValueの出現する直前に通知が行われる。
+ *
* @param pairName PAIR名
* @throws JsVisitException ビジターがトラバース中止を判断した際に
- * 投げられる。
+ * 投げられる。
*/
void visitPairName(String pairName) throws JsVisitException;
/**
* 括弧構造終了の通知を受け取る。
- * <p>括弧構造を持つJSON型は、OBJECT型かARRAY型のみ。</p>
+ *
+ * <p>括弧構造を持つJSON型は、OBJECT型かARRAY型のみ。
+ *
* @param composition OBJECT型かARRAY型のいずれかのValue
* @throws JsVisitException ビジターがトラバース中止を判断した際に
- * 投げられる。
+ * 投げられる。
*/
void visitCompositionClose(JsComposition<?> composition)
throws JsVisitException;
*
* <hr>
*
- * <h1>JSON基本型</h1>
+ * <p>JSON基本型
+ *
* <dl>
* <dt>OBJECT型</dt>
* <dd>{ "Name" : "Joe", "Age" : 88 }</dd>