比较 Java POJO 最简单的方法是什么
What is the easiest way to compare Java POJO
我有一个class
public class A
{
@Nonnull
private final String m_a;
@CheckForNull
private final B m_b;
@Nonnull
private final List<C> m_c;
@JsonCreator
public A(
@JsonProperty("a") @Nonnull final String a,
@JsonProperty("b") @CheckForNull final B b,
@JsonProperty("c") @Nonnull final List<C> c
)
{
m_a = a;
m_b = b;
m_c = checkNotNull(c);
}
// getters ...
}
如果两个 A 实例相等,您建议如何比较?
我可以使用 Jackson 将 JSON 序列化为字符串 (.writeValueAsString
) 并进行比较,但这并不便宜。如果我覆盖 equals
和 hashcode
并比较每个字段是否更好?那它看起来像什么?
Override equals()
and hashCode()
in class A
and C
,然后你可以通过A1.equals(A2)
[=16比较两个实例=]
并且有很多插件可以为您生成它们,example if you are using Intellij。
我有一个class
public class A
{
@Nonnull
private final String m_a;
@CheckForNull
private final B m_b;
@Nonnull
private final List<C> m_c;
@JsonCreator
public A(
@JsonProperty("a") @Nonnull final String a,
@JsonProperty("b") @CheckForNull final B b,
@JsonProperty("c") @Nonnull final List<C> c
)
{
m_a = a;
m_b = b;
m_c = checkNotNull(c);
}
// getters ...
}
如果两个 A 实例相等,您建议如何比较?
我可以使用 Jackson 将 JSON 序列化为字符串 (.writeValueAsString
) 并进行比较,但这并不便宜。如果我覆盖 equals
和 hashcode
并比较每个字段是否更好?那它看起来像什么?
Override equals()
and hashCode()
in class A
and C
,然后你可以通过A1.equals(A2)
[=16比较两个实例=]
并且有很多插件可以为您生成它们,example if you are using Intellij。