compareTo() メソッドをクラスに実装するためのメソッドを提供します。
これは EqualsBuilder と HashCodeBuilder によって実装された
equals と hashcode と調和的です。
equals メソッドで等しいと判定された2つのオブジェクトは、compareTo でも等しいと判定されるべきです。
全ての関連のあるフィールドを比較を行う際の計算に含めるべきです。
取得されたフィールドは無視されるかもしれません(訳注 毎回登録した全てのフィールドを計算するわけではないと言う意味?)。
使用されるフィールドとその順番は compareTo と equals で同じであるべきです。
一般的な使用方法を以下に示します:
public int comapareTo(Object o) {
MyClass rhs = (MyClass) o;
return new CompareToBuilder()
.append(field1, rhs.field1)
.append(field2, rhs.field2)
.appendb(field3, rhs.field3)
.toComparison();
}
もう一つの方法として、リフレクションを使用してフィールドを比較するメソッドがあります。
普通、対象となるフィールドは private であるため、この reflectionCompare
メソッドは フィールドのアクセス制限を変更するために Field.setAccessible
を使用します。
これは適切なパーミッションが設定されていない限り、セキュリティマネージャが稼動している状態では行うことができません。
また、この方法は明らかに低速です。
このメソッドの一般的な使用方法は以下の様になります:
public int compareTo(Object o) {
return CompareToBuilder.reflectionCompare(this, obj);
}
- バージョン:
- $Id: CompareToBuilder.java,v 1.1.1.1 2004/02/13 10:02:04 hioki Exp $
- 作成者:
- Steve Downey, Stephen Colebourne
- 翻訳者:
- 日置 聡
|
フィールドの概要 |
private int |
comparison
テストされたフィールドが等しいかどうか。
|
|
メソッドの概要 |
CompareToBuilder |
append(boolean[] lhs,
boolean[] rhs)
boolean の配列の長さと含まれる全ての値を比較します。
|
CompareToBuilder |
append(boolean lhs,
boolean rhs)
2つの boolean の値の大きさ(<、>、==)を評価します。
|
CompareToBuilder |
append(byte[] lhs,
byte[] rhs)
byte の配列の長さと含まれる全ての値を比較します。
|
CompareToBuilder |
append(byte lhs,
byte rhs)
2つの byte の値の大きさ(<、>、==)を評価します。
|
CompareToBuilder |
append(char[] lhs,
char[] rhs)
char の配列の長さと含まれる全ての値を比較します。
|
CompareToBuilder |
append(char lhs,
char rhs)
2つの char の値の大きさ(<、>、==)を評価します。
|
CompareToBuilder |
append(double[] lhs,
double[] rhs)
double の配列の長さと含まれる全ての値を比較します。
|
CompareToBuilder |
append(double lhs,
double rhs)
2つの double の値の大きさ(<、>、==)を評価します。
|
CompareToBuilder |
append(float[] lhs,
float[] rhs)
float の配列の長さと含まれる全ての値を比較します。
|
CompareToBuilder |
append(float lhs,
float rhs)
2つの float の値の大きさ(<、>、==)を評価します。
|
CompareToBuilder |
append(int[] lhs,
int[] rhs)
int の配列の長さと含まれる全ての値を比較します。
|
CompareToBuilder |
append(int lhs,
int rhs)
2つの int の値の大きさ(<、>、==)を評価します。
|
CompareToBuilder |
append(long[] lhs,
long[] rhs)
long の配列の長さと含まれる全ての値を比較します。
|
CompareToBuilder |
append(long lhs,
long rhs)
2つの long の値の大きさ(<、>、==)を評価します。
|
CompareToBuilder |
append(Object[] lhs,
Object[] rhs)
2つのオブジェクトの配列の内容を掘り下げて比較を行います。
|
CompareToBuilder |
append(Object lhs,
Object rhs)
2つの Object が等しいかどうかを各
compareTo メソッドを使用して評価します。
|
CompareToBuilder |
append(short[] lhs,
short[] rhs)
short の配列の長さと含まれる全ての値を比較します。
|
CompareToBuilder |
append(short lhs,
short rhs)
2つの short の値の大きさ(<、>、==)を評価します。
|
static int |
reflectionCompare(Object lhs,
Object rhs)
このメソッドは指定された2つのオブジェクトを測定するためにリフレクションを使用します。
|
static int |
reflectionCompare(Object lhs,
Object rhs,
boolean testTransients)
このメソッドは指定された2つのオブジェクトを測定するためにリフレクションを使用します。
|
int |
toComparison()
より小さい場合にはマイナスのint値、大きい場合にはプラスのint値、等しい場合には0を返します。
|
| クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
comparison
private int comparison
- テストされたフィールドが等しいかどうか。
CompareToBuilder
public CompareToBuilder()
- CompareToBuilder のコンストラクタです。
初期状態では(2つの)オブジェクトは等しいとみなされます。
- 関連項目:
Object.Object()
reflectionCompare
public static int reflectionCompare(Object lhs,
Object rhs)
- このメソッドは指定された2つのオブジェクトを測定するためにリフレクションを使用します。
このメソッドは private フィールドの値を取得するために Field.setAccessible を使用します。
これはセキュリティマネージャが稼動していて、適切なパーミッションが設定されていない場合、
セキュリティ例外が投げられることを意味します。
このメソッドは明らかに非効率です。
transient メンバーは、おそらくフィールドの値から取得されたものでオブジェクトの値とはならないと考え、
処理の対象としません。
static フィールドは処理の対象にはなりません。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- このオブジェクトの方が小さい場合マイナスの値、等しい場合0、大きい場合プラスの値
- 例外:
NullPointerException - どちらか片方の引数が null の場合
ClassCastException - 指定されたオブジェクト型が自身の比較を行えない場合
reflectionCompare
public static int reflectionCompare(Object lhs,
Object rhs,
boolean testTransients)
- このメソッドは指定された2つのオブジェクトを測定するためにリフレクションを使用します。
このメソッドは private フィールドの値を取得するために Field.setAccessible を使用します。
これはセキュリティマネージャが稼動していて、適切なパーミッションが設定されていない場合、
セキュリティ例外が投げられることを意味します。
このメソッドは明らかに非効率です。
testTransients 引数に true が設定された場合 transient メンバーを処理の対象とし、
false が設定された場合にはフィールドの値から取得されたものでオブジェクトの値とはならないとみなし、
transient メンバーを無視します。
static フィールドは処理の対象にはなりません。
- パラメータ:
lhs - 左側
rhs - 右側
testTransients - transient フィールドを含めるかどうか
- 戻り値:
- このオブジェクトの方が小さい場合マイナスの値、等しい場合0、大きい場合プラスの値
- 例外:
NullPointerException - どちらか片方の引数が null の場合
ClassCastException - 指定されたオブジェクト型が自身の比較を行えない場合
append
public CompareToBuilder append(Object lhs,
Object rhs)
- 2つの
Object が等しいかどうかを各
compareTo メソッドを使用して評価します。
もし渡されたオブジェクトが配列だった場合には該当する比較を行います。
オブジェクトは Comparable である必要があります。
そうでなかった場合、このメソッドは ClassCastException を投げます。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
- 例外:
NullPointerException - どちらか片方の引数が null の場合
ClassCastException - 指定されたオブジェクト型が自身の比較を行えない場合
append
public CompareToBuilder append(long lhs,
long rhs)
- 2つの
long の値の大きさ(<、>、==)を評価します。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
append
public CompareToBuilder append(int lhs,
int rhs)
- 2つの
int の値の大きさ(<、>、==)を評価します。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
append
public CompareToBuilder append(short lhs,
short rhs)
- 2つの
short の値の大きさ(<、>、==)を評価します。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
append
public CompareToBuilder append(char lhs,
char rhs)
- 2つの
char の値の大きさ(<、>、==)を評価します。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
append
public CompareToBuilder append(byte lhs,
byte rhs)
- 2つの
byte の値の大きさ(<、>、==)を評価します。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
append
public CompareToBuilder append(double lhs,
double rhs)
- 2つの
double の値の大きさ(<、>、==)を評価します。
これは NaN、無限大、-0.0 をハンドルします。
これは HashCodeBuilder によって生成されたハッシュコードと互換性を持ちます。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
append
public CompareToBuilder append(float lhs,
float rhs)
- 2つの
float の値の大きさ(<、>、==)を評価します。
これは NaN、無限大、-0.0 をハンドルします。
これは HashCodeBuilder によって生成されたハッシュコードと互換性を持ちます。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
append
public CompareToBuilder append(boolean lhs,
boolean rhs)
- 2つの
boolean の値の大きさ(<、>、==)を評価します。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
append
public CompareToBuilder append(Object[] lhs,
Object[] rhs)
- 2つのオブジェクトの配列の内容を掘り下げて比較を行います。
また、このメソッドは多次元配列、不完全な配列(訳注 ragged を無理やり訳しました)、複数の型の配列の比較の際にも呼ばれます。
もし2つの配列の長さが違って短い方の配列の内容が長い方の配列の(その長さまでの)内容と等しい場合、
長い方の配列が大きいと判断されます。
これは辞書または語彙の順番付けの方法です。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
- 例外:
NullPointerException - どちらか片方の引数が null の場合
ClassCastException - 指定され比較対照となるオブジェクトの型が異なる場合
append
public CompareToBuilder append(long[] lhs,
long[] rhs)
long の配列の長さと含まれる全ての値を比較します。
このメソッドは append(long, long) を利用します。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
- 例外:
NullPointerException - どちらか片方の引数が null の場合
append
public CompareToBuilder append(int[] lhs,
int[] rhs)
int の配列の長さと含まれる全ての値を比較します。
このメソッドは append(int, int) を利用します。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
- 例外:
NullPointerException - どちらか片方の引数が null の場合
append
public CompareToBuilder append(short[] lhs,
short[] rhs)
short の配列の長さと含まれる全ての値を比較します。
このメソッドは append(short, short) を利用します。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
- 例外:
NullPointerException - どちらか片方の引数が null の場合
append
public CompareToBuilder append(char[] lhs,
char[] rhs)
char の配列の長さと含まれる全ての値を比較します。
このメソッドは append(char, char) を利用します。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
- 例外:
NullPointerException - どちらか片方の引数が null の場合
append
public CompareToBuilder append(byte[] lhs,
byte[] rhs)
byte の配列の長さと含まれる全ての値を比較します。
このメソッドは append(byte, byte) を利用します。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
- 例外:
NullPointerException - どちらか片方の引数が null の場合
append
public CompareToBuilder append(double[] lhs,
double[] rhs)
double の配列の長さと含まれる全ての値を比較します。
このメソッドは append(double, double) を利用します。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
- 例外:
NullPointerException - どちらか片方の引数が null の場合
append
public CompareToBuilder append(float[] lhs,
float[] rhs)
float の配列の長さと含まれる全ての値を比較します。
このメソッドは append(float, float) を利用します。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
- 例外:
NullPointerException - どちらか片方の引数が null の場合
append
public CompareToBuilder append(boolean[] lhs,
boolean[] rhs)
boolean の配列の長さと含まれる全ての値を比較します。
このメソッドは append(boolean, boolean) を利用します。
- パラメータ:
lhs - 左側
rhs - 右側
- 戻り値:
- 連結してコールするために使用される CompareToBuilder
- 例外:
NullPointerException - どちらか片方の引数が null の場合
toComparison
public int toComparison()
- より小さい場合にはマイナスのint値、大きい場合にはプラスのint値、等しい場合には0を返します。
- 戻り値:
- このオブジェクトの方が小さい場合マイナスの値、等しい場合0、大きい場合プラスの値
このドキュメントは、Ja-Jakartaにより訳されました。 コメントがある場合は report@jajakarta.orgまでお願いします。
Translated into Japanese by jajakarta.org. The original page is here.
Copyright (c) 2002-2003 - Apache Software Foundation