NotSerializableException в анонимном классе с использованием Comparator - PullRequest
1 голос
/ 03 августа 2020

Я получаю NotSerializableException , и причина в анонимном внутреннем классе, как я могу сделать этот настраиваемый компаратор для TreeSet, который также реализует интерфейс Serializable.

badPatients = new TreeSet<Patient>(new Comparator <Patient>() {
        public int compare(Patient p1,Patient p2) {
            if(p1.getStatus() > p2.getStatus())
                return -1;
            if(p1.getStatus() == p2.getStatus())
                return 0;
            return 1;
        }
    });

1 Ответ

1 голос
/ 03 августа 2020

Вы можете создать собственный интерфейс, который расширяет Comparator<T>, а также Serializable:

SerializableComparator. java

public interface SerializableComparator<T> extends Comparator<T>, Serializable {
    //Nothing here
}

В вашем коде измените аргумент с Comparator<Parent> на SerializableComparator<Parent>.

badPatients = new TreeSet<Patient>(new SerializableComparator<Patient>() {
        public int compare(Patient p1,Patient p2) {
            if(p1.getStatus() > p2.getStatus())
                return -1;
            if(p1.getStatus() == p2.getStatus())
                return 0;
            return 1;
        }
    });
...