我想将Guava TreeMultimap的实例放到http会话中,但是我不断收到此异常:NotSerializableException
有人知道如何解决这个问题吗?
我的控制器如下所示:
@Controller
public class MyController
{
public void doStuff(HttpServletRequest request, HttpServletResponse response)
{
TreeMultimap<String, MyCustomClass> myMap = TreeMultimap.create(
new Comparator<String>()
{
@Override
public int compare(String o1, String o2)
{
return o1.compareTo(o2);
}
},
new Comparator<MyCustomClass>()
{
@Override
public int compare(MyCustomClass o1, MyCustomClass o2)
{
return o1.compareTo(o2);
}
});
request.getSession().setAttribute("MyAttribute", myMap); //==> ERROR HERE!
}
}
最佳答案
看来问题在于您的Comparator
不是Serializable
。将每一个都实现为同时实现Comparator
和Serializable
的非匿名类,应该没问题。
实际上,由于您的两个Comparator
都只是在实现自然顺序,因此您应该能够编写
TreeMultimap<String, MyCustomClass> myMap = TreeMultimap.create();