使用比较器的匿名 class 上的 NotSerializableException

NotSerializableException on anonymous class using Comparator

我收到 NotSerializableException 原因是匿名内部 class 我怎样才能为 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;
        }
    });

您可以创建一个扩展 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;
        }
    });