4 * License : The MIT License
5 * Copyright(c) 2009 olyutorskii
8 package jp.sourceforge.jovsonz;
10 import java.io.IOException;
13 * OBJECT型Value内に列挙される、名前の付いたValueとの組(PAIR)。
18 * "PairName1" : 99.9 ,
19 * "PairName2" : "textValue"
26 private final String name;
27 private final JsValue value;
32 * @param value PAIR名に対応付けられるValue
33 * @throws NullPointerException 引数のいずれかがnull
35 public JsPair(String name, JsValue value)
36 throws NullPointerException{
39 if(name == null || value == null) throw new NullPointerException();
49 * STRING型をValueに持つPAIRが生成される。
51 * @param text PAIR名に対応付けられる文字列データ。
53 * @throws NullPointerException 引数がnull
55 public JsPair(String name, CharSequence text)
56 throws NullPointerException{
57 this(name, (JsValue) new JsString(text) );
63 * BOOLEAN型をValueに持つPAIRが生成される。
65 * @param bool PAIR名に対応付けられる真偽値
66 * @throws NullPointerException PAIR名がnull
68 public JsPair(String name, boolean bool)
69 throws NullPointerException{
70 this(name, JsBoolean.valueOf(bool));
76 * NUMBER型をValueに持つPAIRが生成される。
78 * @param number PAIR名に対応付けられる整数値
79 * @throws NullPointerException PAIR名がnull
81 public JsPair(String name, long number)
82 throws NullPointerException{
83 this(name, new JsNumber(number));
89 * NUMBER型をValueに持つPAIRが生成される。
91 * @param number PAIR名に対応付けられる実数値
92 * @throws NullPointerException PAIR名がnull
94 public JsPair(String name, double number)
95 throws NullPointerException{
96 this(name, new JsNumber(number));
104 public String getName(){
112 public JsValue getValue(){
119 * PAIR名とValue双方のハッシュ値から合成される。
120 * @return {@inheritDoc}
123 public int hashCode(){
124 int nameHash = this.name.hashCode();
125 int valHash = this.value.hashCode();
126 return nameHash ^ valHash;
132 * PAIR名とValue双方が一致する場合のみ真となる。
133 * @param obj {@inheritDoc}
134 * @return {@inheritDoc}
137 public boolean equals(Object obj){
138 if(this == obj) return true;
140 if( ! (obj instanceof JsPair) ) return false;
141 JsPair target = (JsPair) obj;
143 if( ! this.name .equals(target.name) ) return false;
144 if( ! this.value.equals(target.value) ) return false;
151 * JSON表記の一部としての利用も可能。
152 * @return {@inheritDoc}
155 public String toString(){
156 StringBuilder result = new StringBuilder();
158 JsString.dumpString(result, this.name);
159 }catch(IOException e){
161 throw new AssertionError(e);
165 .append(this.value.toString());
167 return result.toString();