Java 反思:避免使用默认值的字段

Java Reflection : avoid fields with default values

我有以下 class 结构:

public Class A{
private int a;
private String b;
private B binst;
}

public Class B{
private int x;
private String y;
}

所有的 getter 和 setter 都已定义。我使用 Java 反射调用如下:

method.invoke(ClassAObj, ClassBObj);

现在,在调用它之前,我只设置了 y 而不是 x。我把这个ClassAObj转成JSON,发现x设置了默认值0,出现在JSON中。我不希望 x 字段出现在 JSON 中。我应该如何避免这种情况?

有趣的是,如果我设置 x 而不是 y,标签 y 不会出现在 JSON 中。

因为 int 是原始值,即:不可为空,通常 Json 解析器会丢弃空值。 您可以使用 reference 类型 Integer,其默认值为 null .

public Class B{
  private Integer x;
  private String y;
}