@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();
顺便说一句,文档说:
返回对所有对象的任意排序,这
compare(a, b) == 0
意味着a == b
(身份相等)。强加的命令没有任何意义,但它在 VM 的生命周期内是不变的。
这是否意味着与此 Ordering 进行比较的对象永远不会被垃圾收集?