默认 Jhipster 应用程序 - 无用实现可序列化?

Default Jhipster app - useless implements Serializable?

Jhipster(版本 6.7.1)生成的默认 User 实体 class 扩展 AbstractAuditingEntity 并实现 Serializable .

然而,Visual Studio 代码显示以下警告:

Redundant superinterface Serializable for the type User, already defined by AbstractAuditingEntity

确实,导航到AbstractAuditingEntityclass的定义,可以清楚地看到AbstractAuditingEntity已经实现了Serializable

所以我的问题是:这个 implements Serializable 需要 在用户 class 中还是可以安全地 删除?

实际上,这在理论上很棘手。

眼下,​​那个implements的说法实在是多余。当您打算使用 "built-in" Java 序列化机制时,Serializable 很重要。该机制将在运行时检查您的对象的具体类型,对该机制唯一重要的是某个对象是否实现了该接口(而不是 "inherited" 或 "just on that class" ).

理论上,没有 冗余声明可能会在 base class 更改时导致问题。意思是:如果 AbstractAuditingEntity 在某个时候被重做,它的 implements Serializable 部分被删除了怎么办?那么 User 自己这么说就很重要了。

但如前所述,那部分是相当理论化的:您的基础 class 不应该以这种方式改变。如果是这样,您可能正在查看过多的不兼容问题!

然而,如图所示,保留声明或删除声明这两个选项都可以看出是有意义的。

因此,我会从务实的角度来看待这个问题。

所以,回答你的问题,你应该问一个不同的问题:我是要经常重新生成那个 User class,还是我只生成它一次,然后继续手动编辑?

情况一:文件一直在生成。然后简单地接受工具正在做的事情(如果你不能以某种方式改变它)并接受警告。

情况2:生成后,您成为该文件的所有者。那么我希望它是 "warning free",因此删除 implements 语句。