Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Java比较器序列化为JSON?_Java_Serialization - Fatal编程技术网

如何将Java比较器序列化为JSON?

如何将Java比较器序列化为JSON?,java,serialization,Java,Serialization,我目前正在构建一个程序,其中Java对象在客户端序列化为JSON,然后反序列化回Java对象并在服务器上处理。我已经为最常见的集合子类正确地实现了序列化,但我正在努力找出如何处理依赖于Comparator的自定义实例的树映射实例 特别是,像这样的自定义比较器如何序列化 Comparator<String> lengthComparator = new Comparator<String>() { public int compare(String o1, Stri

我目前正在构建一个程序,其中Java对象在客户端序列化为JSON,然后反序列化回Java对象并在服务器上处理。我已经为最常见的
集合
子类正确地实现了序列化,但我正在努力找出如何处理依赖于
Comparator的自定义实例的
树映射
实例

特别是,像这样的自定义
比较器如何序列化

Comparator<String> lengthComparator = new Comparator<String>() {
    public int compare(String o1, String o2) {
        return Integer.compare(o1.length(), o2.length());
    }
};
比较器长度比较器=新比较器(){ 公共整数比较(字符串o1、字符串o2){ 返回整数.compare(o1.length(),o2.length()); } };

我主要是想弄清楚,如果服务器上还没有定义
Comparator
的匿名子类,如何在客户端将其序列化为JSON,然后在服务器上反序列化。

Comparator没有状态,因此,除了匿名类的二进制名称之外,没有什么真正需要序列化的。与任何其他类一样,匿名类需要存在于反序列化的JVM的类路径中。如果要实现
Serializable
接口,可能需要使用
implements
子句将其声明为非匿名类。我认为您可能对Java序列化有误解。为了进行反序列化,您仍然需要在目标位置使用适当的库,包括自定义比较器。只有类实例所需的信息才被序列化。@DaveNewton,谢谢你回答了我关于Java序列化工作原理的第二个问题。我将编辑我的问题以删除该部分,因为我主要感兴趣的是如何将其用于JSON。这只是一种特定的序列化格式(可搜索)。比较器根本就不存在——您只需要在目标上使用适当的库。@mchen.ja您“不能”发送指示调用对象的方法的内容(如通过反射)。但我不会;服务器只需要知道该做什么。