@SuppressWarnings("unchecked")
public static final Ordering<EmailTemplate> ARBITRARY_ORDERING = (Ordering)Ordering.arbitrary();
public static final Ordering<EmailTemplate> ORDER_BY_NAME = Ordering.natural().nullsFirst().onResultOf(GET_NAME);
public static final Ordering<EmailTemplate> ORDER_BY_NAME_SAFE = Ordering.allEqual().nullsFirst()
.compound(ORDER_BY_NAME)
.compound(ARBITRARY_ORDERING);
EmailTemplate を注文するために使用するコードを次に示します。EmailTemplate のリストがある場合、リストの null 要素を最初に表示し、次に null 名の要素を表示し、次に自然な名前の順序で表示し、同じ名前の場合は任意の順序で表示します。
それは私がすべきことですか?「allEqual」でコンパレータを開始するのは奇妙に思えます...
また、Ordering.arbitrary() は Ordering を返す静的メソッドであるため、これを処理する最善の方法は何だろうと考えています。それを使用するエレガントな方法はありますか?私はこの種の役に立たない警告付きの行があまり好きではありません:
@SuppressWarnings("unchecked")
public static final Ordering<EmailTemplate> ARBITRARY_ORDERING = (Ordering)Ordering.arbitrary();
ちなみに、ドキュメントには次のように書かれています。
(identity equals)を
compare(a, b) == 0
意味するすべてのオブジェクトの任意の順序を返します。a == b
課された順序には何の意味もありませんが、VM の存続期間中は一定です。
これは、この Ordering と比較されているオブジェクトがガベージ コレクションされないことを意味しますか?