使用比较器的匿名 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;
}
});
我收到 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;
}
});