默认的Jhipster应用--无用的实现Serializable?

问题描述 投票:0回答:1

默认的 User 由Jhipster(6.7.1版)生成的实体类,扩展为 AbstractAuditingEntity 并实施 Serializable .

然而,Visual Studio Code却显示以下警告 。

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

事实上,导航到定义中的 AbstractAuditingEntity 类,可以清楚地看到 AbstractAuditingEntity 已经实现了 Serializable.

所以我的问题是:这是 implements Serializable 需要 的用户类中,或者它可以安全地 移除?

java serialization entity jhipster
1个回答
3
投票

其实,这在理论上是很棘手的。

现在,这 implements 语句其实是多余的。Serializable 当你打算使用 "内置的 "Java序列化机制时,这句话就很重要了。而该机制会在运行时检查你的对象的具体类型,对该机制来说,唯一重要的是某个对象是否实现了该接口(而不是 "继承",或者 "只是在该类上")。

理论上来说。 当有了还原剂声明时,可能会导致问题。基础 类变化。意思是:如果 AbstractAuditingEntity 在某些时候被改版,其 implements Serializable 部分被删除?那就必须 User 自己也是这么说的。

但正如所说,这部分是相当理论性的:你的基类不应该以这种方式改变。而如果真的这样做了,无论如何,你可能要面对大量的不兼容问题!

然而,如图所示,无论是保留声明,还是删除声明这两种选择,都可以看出是有意义的。

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

所以,回答你的问题,你应该问一个不同的问题。我是否要重新生成 User 类,还是我只生成一次,然后一直手动编辑?

情况一:文件一直在生成。那就干脆接受工具正在做的事情(如果你不能以某种方式改变的话),然后去警告。

情况2:生成后,你成为了该文件的所有者。那么我更希望它是 "无警告 "的,这样就去掉了 implements 声明:

© www.soinside.com 2019 - 2024. All rights reserved.