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)。
19 * "PairName1" : 99.9 ,
20 * "PairName2" : "textValue"
28 private final String name;
29 private final JsValue value;
34 * @param value PAIR名に対応付けられるValue
35 * @throws NullPointerException 引数のいずれかがnull
37 public JsPair(String name, JsValue value)
38 throws NullPointerException{
41 if(name == null || value == null) throw new NullPointerException();
51 * STRING型をValueに持つPAIRが生成される。
53 * @param text PAIR名に対応付けられる文字列データ。
55 * @throws NullPointerException 引数がnull
57 public JsPair(String name, CharSequence text)
58 throws NullPointerException{
59 this(name, (JsValue) new JsString(text) );
65 * BOOLEAN型をValueに持つPAIRが生成される。
67 * @param bool PAIR名に対応付けられる真偽値
68 * @throws NullPointerException PAIR名がnull
70 public JsPair(String name, boolean bool)
71 throws NullPointerException{
72 this(name, JsBoolean.valueOf(bool));
78 * NUMBER型をValueに持つPAIRが生成される。
80 * @param number PAIR名に対応付けられる整数値
81 * @throws NullPointerException PAIR名がnull
83 public JsPair(String name, long number)
84 throws NullPointerException{
85 this(name, new JsNumber(number));
91 * NUMBER型をValueに持つPAIRが生成される。
93 * @param number PAIR名に対応付けられる実数値
94 * @throws NullPointerException PAIR名がnull
96 public JsPair(String name, double number)
97 throws NullPointerException{
98 this(name, new JsNumber(number));
106 public String getName(){
114 public JsValue getValue(){
121 * PAIR名とValue双方のハッシュ値から合成される。
122 * @return {@inheritDoc}
125 public int hashCode(){
126 int nameHash = this.name.hashCode();
127 int valHash = this.value.hashCode();
128 return nameHash ^ valHash;
134 * PAIR名とValue双方が一致する場合のみ真となる。
135 * @param obj {@inheritDoc}
136 * @return {@inheritDoc}
139 public boolean equals(Object obj){
140 if(this == obj) return true;
142 if( ! (obj instanceof JsPair) ) return false;
143 JsPair target = (JsPair) obj;
145 if( ! this.name .equals(target.name) ) return false;
146 if( ! this.value.equals(target.value) ) return false;
153 * JSON表記の一部としての利用も可能。
154 * @return {@inheritDoc}
157 public String toString(){
158 StringBuilder result = new StringBuilder();
160 JsString.dumpString(result, this.name);
161 }catch(IOException e){
163 throw new AssertionError(e);
167 .append(this.value.toString());
169 return result.toString();