enum 的字段必须是可序列化的吗?

2023-11-26

我正在通过 SonarQube 版本 5.1 分析 Java SE 7 项目。

然后,我面临squid:S1948在下面的代码上。

“可序列化”类中的字段应该是瞬态的或可序列化的

可序列化类中的字段本身必须是可序列化的或瞬态的,即使该类从未显式序列化或反序列化。这是因为在负载下,大多数 J2EE 应用程序框架都会将对象刷新到磁盘,而具有非瞬态、不可序列化数据成员的所谓可序列化对象可能会导致程序崩溃,并为攻击者打开大门。

enum ShutterSpeed {
   private final Rational value; // Make "value" transient or serializable.
   ...
}

我认为任何枚举字段都不会在 J2SE 5.0 中被序列化(枚举常量的序列化)

这是假阳性吗?

整个代码和问题是here.


这实际上是一个误报。这枚举常量的序列化(您提供了链接)说:

枚举常量的序列化与普通可序列化不同 或可外部化的对象。枚举常量的序列化形式 仅由其名称组成;常量的字段值不是 以形式呈现。

据我看来,标记没有意义Enum的字段值为transient或让他们实施Serializable,因为它们永远不会被序列化,无论它们是否被标记为transient或实施Serializable.

如果该分析工具强迫您做这两件事之一,那么您将编写无用的代码。如果我是你,我会尝试禁用该警告enums.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

enum 的字段必须是可序列化的吗? 的相关文章

随机推荐

  • 什么是<?超级 T> 语法? [复制]

    这个问题在这里已经有答案了 我无法理解以下语法 public class SortedList lt T extends Comparable lt super T gt gt extends LinkedList lt T gt 我看到类
  • Mockito junit 5 模拟构造函数

    我想模拟构造函数并在调用构造函数时返回模拟对象 这可以使用 powermockito 的 whenNew 方法来实现 如下所示 PowerMockito whenNew ClassName class withAnyArguments th
  • 从文本文件中删除特定行?

    我需要从文本文件中删除确切的一行 但我一生都无法弄清楚如何执行此操作 任何建议或例子将不胜感激 相关问题 从文本文件中删除行的有效方法 C 如果要删除的行是基于该行的内容 string line null string line to de
  • d3.js 中子节点朝向多个侧面的树(类似于家谱)

    var treeData name Device parent null var treeData2 name Device parent null document ready function var margin top 20 rig
  • SQLAlchemy @property 使用 dump_only 在 Marshmallow 中导致“未知字段”错误

    我正在使用flask marshmallow marshmallow v3 0 0rc1 flask marshmallow 0 9 0 和flask sqlalchemy sqlalchemy 1 2 16 flask sqlalchem
  • 矢量与数组性能

    在另一个线程中 我开始了关于向量和数组的讨论 其中我主要扮演魔鬼代言人的角色 按下按钮 然而 在这个过程中 我偶然发现了一个让我有点困惑的测试用例 我想对此进行一次真正的讨论 关于我因扮演魔鬼代言人而受到的 虐待 开始一个真正的测试用例 现
  • 在 Powershell 中使用参数调用 Invoke-Expression

    我用 C 编写了一个 powershell 模块 其中包含一堆 cmdlet 例如 Add VM 这些 cmdlet 会访问 API 并拉回数据 但为了与产品的 ssh CLI 保持一致 我编写了一个名为 newtask 的函数 它接受 a
  • Heroku Postgres:此连接已关闭

    我开发了一个小型 Heroku Grails Postreg 应用程序 部署后 20 分钟左右它就会正常工作 之后我总是得到 This connection has been closed Stacktrace follows Heroku
  • 从 Eclipse 查看本机代码

    我有一个使用本机方法调用的 java 应用程序 有没有办法在 eclipse 中查看此代码 我可以获得这个本机库的源代码 但不知道如何在 IDE 中链接 如果有人告诉我如何调试这个本机方法 也会很有帮助 不是完整的答案 但 Eclipse
  • 如何在 Javascript 中使用循环生成事件处理程序? [复制]

    这个问题在这里已经有答案了 例如 我有 10 个从 AJAX 响应生成的 a 标签 a href b1 a a href b2 a a href b3 a a href b4 a a href b5 a a href b6 a a href
  • 如何监听VueJS中的所有自定义事件?

    在我的 VueJS 应用程序中 我有一个 Vue 实例 我将其用作事件总线 用于在组件之间发送数据 就是这样 import Vue from vue export const EventBus new Vue 然后在我的组件中导入 Even
  • 将多个选择器与伪类关联

    有没有办法让多个选择器与伪类关联 换句话说 我想让它在悬停或聚焦于锚点 图像或按钮时 它们周围会有一个特殊的边框 我尝试过这个 在黑暗中拍摄 a button img hover a button img focus border 2px
  • 隐式使用 Scala 实现类型相等

    我一直在阅读一些有关 Scala 类型级编程的内容 主要是 Apocalisp 博客 还有 Alexander Lehmann 的 YouTube 演讲 我有点坚持我认为可能非常基本的事情 即使用隐式比较两种类型 如下所示 implicit
  • 使用本机滚动时使滚动条在离子内容中可见

    我在用overflow scroll true 让 ionic 使用原生滚动
  • 如何获取sbt多项目构建中的子项目路径

    我正在尝试获取 sbt 中多项目构建中子项目的位置 但我只能获取根项目目录 lazy val copyToResources taskKey Unit copies the assembly jar private val rootLoca
  • iOS 设备和蓝牙

    有谁知道外部蓝牙设备和 iPhone iPad 4S 及以上 之间的最大数据传输速率 我读到 BT3 0 中的增强数据速率为 24Mbs iPhone 可以支持吗 使用 BT4 0 LTE 的最大数据量是多少 多谢你们 iPhone iPa
  • 使用 SQLDataReader 代替记录集

    我对此很陌生并且有这个问题 我可以使用 SQLDataReader 代替 Recordset 吗 我想在 SQLDataReader 中实现以下结果 Dim dbConn As New ADODB Connection Dim rs As
  • AngularJS 和 jQuery 冲突

    我用 AngularJs 和 jQuery 编写了一些代码 只有一种方法有效 要么是 AngularJs 要么是 jQuery jQuery 和 AngularJs 似乎互相冲突 一旦我包含这两个库 它们就不再正常工作 如果我只包含其中之一
  • Hadoop 减速器在内存中的值?

    我正在编写一个 MapReduce 作业 最终可能会在减速器中产生大量值 我担心所有这些值都会立即加载到内存中 底层实现是否Iterable
  • enum 的字段必须是可序列化的吗?

    我正在通过 SonarQube 版本 5 1 分析 Java SE 7 项目 然后 我面临squid S1948在下面的代码上 可序列化 类中的字段应该是瞬态的或可序列化的 可序列化类中的字段本身必须是可序列化的或瞬态的 即使该类从未显式序