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;
}
我有以下 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;
}