天天看點

[Google Guava] 1.3-常見Object方法

equals

<code>1</code>

<code>objects.equal(</code><code>"a"</code><code>, </code><code>"a"</code><code>); </code><code>// returns true</code>

<code>2</code>

<code>objects.equal(</code><code>null</code><code>, </code><code>"a"</code><code>); </code><code>// returns false</code>

<code>3</code>

<code>objects.equal(</code><code>"a"</code><code>, </code><code>null</code><code>); </code><code>// returns false</code>

<code>4</code>

<code>objects.equal(</code><code>null</code><code>, </code><code>null</code><code>); </code><code>// returns true</code>

hashcode

tostring

<code>// returns "classname{x=1}"</code>

<code>objects.tostringhelper(</code><code>this</code><code>).add(</code><code>"x"</code><code>, </code><code>1</code><code>).tostring();</code>

<code>// returns "myobject{x=1}"</code>

<code>objects.tostringhelper(</code><code>"myobject"</code><code>).add(</code><code>"x"</code><code>, </code><code>1</code><code>).tostring();</code>

compare/compareto

實作一個比較器[comparator],或者直接實作comparable接口有時也傷不起。考慮一下這種情況:

<code>01</code>

<code>class</code> <code>person </code><code>implements</code> <code>comparable&lt;person&gt; {</code>

<code>02</code>

<code>  </code><code>private</code> <code>string lastname;</code>

<code>03</code>

<code>  </code><code>private</code> <code>string firstname;</code>

<code>04</code>

<code>  </code><code>private</code> <code>int</code> <code>zipcode;</code>

<code>05</code>

<code>06</code>

<code>  </code><code>public</code> <code>int</code> <code>compareto(person other) {</code>

<code>07</code>

<code>    </code><code>int</code> <code>cmp = lastname.compareto(other.lastname);</code>

<code>08</code>

<code>    </code><code>if</code> <code>(cmp != </code><code>0</code><code>) {</code>

<code>09</code>

<code>      </code><code>return</code> <code>cmp;</code>

<code>10</code>

<code>    </code><code>}</code>

<code>11</code>

<code>    </code><code>cmp = firstname.compareto(other.firstname);</code>

<code>12</code>

<code>13</code>

<code>14</code>

<code>15</code>

<code>    </code><code>return</code> <code>integer.compare(zipcode, other.zipcode);</code>

<code>16</code>

<code>  </code><code>}</code>

<code>17</code>

<code>}</code>

comparisonchain執行一種懶比較:它執行比較操作直至發現非零的結果,在那之後的比較輸入将被忽略。

<code>public</code> <code>int</code> <code>compareto(foo that) {</code>

<code>    </code><code>return</code> <code>comparisonchain.start()</code>

<code>            </code><code>.compare(</code><code>this</code><code>.astring, that.astring)</code>

<code>            </code><code>.compare(</code><code>this</code><code>.anint, that.anint)</code>

<code>5</code>

<code>            </code><code>.compare(</code><code>this</code><code>.anenum, that.anenum, ordering.natural().nullslast())</code>

<code>6</code>

<code>            </code><code>.result();</code>

<code>7</code>