Переопределение интерфейса Comparable. Позволяет нам сравнить объекты между собой по определённым критериям.
Вспомним суть работы Comparable:
- Если экземпляр равны, вернёт 0
- Если экземпляр больше, вернёт 1
- Если экземпляр меньше, вернёт -1
Такой подход позволяет сортировать кастомные объекты в List с помощью метода sort(), но для этого нужен доп класс.
Переходим к практике:
- Имплементируем Combarable
- Переопределяем метод compareTo (Object compareTo)
public class InvoiceWrapper implements Comparable {
public Invoice__c invoice { get; set; }
public Boolean isSelected { get; set; }
public InvoiceWrapper(Invoice__c invoice, Boolean isSelected) {
this.invoice = invoice;
this.isSelected = isSelected;
}
public Integer compareTo(Object compareTo) {
InvoiceWrapper compareToInvoiceWrapper = (InvoiceWrapper)compareTo;
Integer returnValue = 0;
if (invoice.Name > compareToInvoiceWrapper.invoice.Name) {
returnValue = 1;
} else if (invoice.Name < compareToInvoiceWrapper.invoice.Name) {
returnValue = -1;
}
return returnValue;
}
}
Да, тут использовали Wrapper, иначе никак, так как у кастомных типов нет класса, где мы бы могли переопределить метод compareTo. Просто создайте обёртку и добавьте в нём экземпляр необходимого вам типа. И уже его передавайте в List.