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"
27 private final String name;
28 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();
52 * <p>STRING型をValueに持つPAIRが生成される。
55 * @param text PAIR名に対応付けられる文字列データ。
57 * @throws NullPointerException 引数がnull
59 public JsPair(String name, CharSequence text)
60 throws NullPointerException{
61 this(name, (JsValue) new JsString(text) );
68 * <p>BOOLEAN型をValueに持つPAIRが生成される。
71 * @param bool PAIR名に対応付けられる真偽値
72 * @throws NullPointerException PAIR名がnull
74 public JsPair(String name, boolean bool)
75 throws NullPointerException{
76 this(name, JsBoolean.valueOf(bool));
83 * <p>NUMBER型をValueに持つPAIRが生成される。
86 * @param number PAIR名に対応付けられる整数値
87 * @throws NullPointerException PAIR名がnull
89 public JsPair(String name, long number)
90 throws NullPointerException{
91 this(name, new JsNumber(number));
98 * <p>NUMBER型をValueに持つPAIRが生成される。
101 * @param number PAIR名に対応付けられる実数値
102 * @throws NullPointerException PAIR名がnull
104 public JsPair(String name, double number)
105 throws NullPointerException{
106 this(name, new JsNumber(number));
115 public String getName(){
124 public JsValue getValue(){
133 * <p>PAIR名とValue双方のハッシュ値から合成される。
135 * @return {@inheritDoc}
138 public int hashCode(){
139 int nameHash = this.name.hashCode();
140 int valHash = this.value.hashCode();
141 return nameHash ^ valHash;
149 * <p>PAIR名とValue双方が一致する場合のみ真となる。
151 * @param obj {@inheritDoc}
152 * @return {@inheritDoc}
155 public boolean equals(Object obj){
156 if(this == obj) return true;
158 if( ! (obj instanceof JsPair) ) return false;
159 JsPair target = (JsPair) obj;
161 if( ! this.name .equals(target.name) ) return false;
162 if( ! this.value.equals(target.value) ) return false;
170 * <p>JSON表記の一部としての利用も可能。
172 * @return {@inheritDoc}
175 public String toString(){
176 StringBuilder result = new StringBuilder();
178 JsString.dumpString(result, this.name);
179 }catch(IOException e){
181 throw new AssertionError(e);
185 .append(this.value.toString());
187 return result.toString();