英文:
NotSerializableException on anonymous class using Comparator
问题
我收到了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;
}
});
英文:
I'm getting NotSerializableException and the reason is an anonymous inner class how can I make this customized comparator for a TreeSet implements Serializable interface too .
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
以下是翻译好的部分:
你可以创建一个自定义接口,它扩展了 Comparator<T>
并且也扩展了 Serializable
:
SerializableComparator.java
public interface SerializableComparator<T> extends Comparator<T>, Serializable {
// 这里没有内容
}
在你的代码中,将参数从 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;
}
});
英文:
You can create a custom interface that extends Comparator<T>
and also extends Serializable
:
SerializableComparator.java
public interface SerializableComparator<T> extends Comparator<T>, Serializable {
//Nothing here
}
In your code, change the argument from Comparator<Parent>
to 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;
}
});
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论