Лучшая практика, которую я видел проповедованной повсюду, - это иметь один конструктор, который принимает все параметры, даже если это означает, что он должен быть закрытым, а затем просто вызывать его из других конструкторов, используя this(..,..,...)
при предоставлении соответствующих значений.
Это позволит вам повторно использовать как можно больше кода, и будущие исправления будут размещаться в одном месте и только в одном месте - нет необходимости выполнять двойное обслуживание кода.
Ваш пример будет выглядеть следующим образом:
public class CustomComparator implements Comparator<StudentList> {
private String sortBy;
private boolean ascending;
public CustomComparator()
{
this(COLUMN_LAST_NAME, true);
}
public CustomComparator(String sortBy, boolean ascending)
{
this.sortBy = sortBy;
this.ascending = ascending;
}
}
Обычно считается, что инициализация выполняется в конструкторе, чтобы легче отличать статическую инициализацию статических членов от инициализации переменных экземпляра для каждого экземпляра.Различий в производительности нет.