默认的 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
需要 的用户类中,或者它可以安全地 移除?
其实,这在理论上是很棘手的。
现在,这 implements
语句其实是多余的。Serializable
当你打算使用 "内置的 "Java序列化机制时,这句话就很重要了。而该机制会在运行时检查你的对象的具体类型,对该机制来说,唯一重要的是某个对象是否实现了该接口(而不是 "继承",或者 "只是在该类上")。
理论上来说。不 当有了还原剂声明时,可能会导致问题。基础 类变化。意思是:如果 AbstractAuditingEntity
在某些时候被改版,其 implements Serializable
部分被删除?那就必须 User
自己也是这么说的。
但正如所说,这部分是相当理论性的:你的基类不应该以这种方式改变。而如果真的这样做了,无论如何,你可能要面对大量的不兼容问题!
然而,如图所示,无论是保留声明,还是删除声明这两种选择,都可以看出是有意义的。
因此,我会从实用主义的角度来看待这个问题。
所以,回答你的问题,你应该问一个不同的问题。我是否要重新生成 User
类,还是我只生成一次,然后一直手动编辑?
情况一:文件一直在生成。那就干脆接受工具正在做的事情(如果你不能以某种方式改变的话),然后去警告。
情况2:生成后,你成为了该文件的所有者。那么我更希望它是 "无警告 "的,这样就去掉了 implements
声明: