Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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 如何创建包含未确定字段的对象_Java_Json_Generics_Serialization - Fatal编程技术网

Java 如何创建包含未确定字段的对象

Java 如何创建包含未确定字段的对象,java,json,generics,serialization,Java,Json,Generics,Serialization,我正在创建一个比较服务,它比较两个对象并生成结果,包括不同的部分。比较结果对象将映射到JSON并返回REST服务 public class CompareResult { private final String errorCode; private final String codeName; private final Map<String, T> compareResult; setter, getter } ,而T可能是对象1或对象3 我知道这可能与泛型类型有关,但我不

我正在创建一个比较服务,它比较两个对象并生成结果,包括不同的部分。比较结果对象将映射到JSON并返回REST服务

public class CompareResult {

private final String errorCode;
private final String codeName;
private final Map<String, T> compareResult;

setter, getter
}
,而T可能是对象1或对象3

我知道这可能与泛型类型有关,但我不知道如何实现它。简单地说,在我在CompareResult类中定义的字段中,CompareResult是一个映射,T可以是任何对象。当我使用objectMapper从object映射到JSON字符串时,是否可以使用Map,如果可以,这会导致任何问题

compareResult是一个映射,T可以是任何对象

既然您不想对类型设置任何限制,我认为放弃泛型将是一个好主意

你可以这样做

private final Map<String, Object> compareResult;
私有最终地图比较结果;

第二个问题的答案是否定的,
ObjectMapper
应该可以正常工作


希望这有帮助。

谢谢,所以当我在成员变量中创建CompareResult对象时,我可以创建任何类似Map、Map的映射。因为我不是object1和object2的所有者,所以我不需要做任何更改,对吗?当我将CompareResult序列化为JSON字符串时,我只使用mapper.writeValueAsString(CompareResult)?我的意思是,如果我想将Object1、Object2作为映射中任何字符串的值。我不必对Object1或Object2本身做任何事情,对吗?因为我不能改变他们。我不是我比较的对象的所有者。您只需要这些对象的引用。地图应仅存储参考,且不会更改对象。序列化也不会更改对象。
private final Map<String, Object> compareResult;