java - 如何解决 EI_EXPOSE_REP2 及其错误原因

标签 java date findbugs

我在我的项目中运行了 FindBugs,我收到了以下警告:

new foo.pkg.Key(Client, Product, Date, String) may expose internal representation by storing an externally mutable object into Key.expireDate MALICIOUS_CODE EI_EXPOSE_REP2 60 Medium

Key 是一个具有 Date expireDate 的实体,具有各自的 getter 和 setter,并在构造函数中使用它们。

实际上,我只是返回一个(Date) dataNascimento.clone(),并在setter中使用相同的策略。

问题(按倒序排列):

  • 这是更好的方法吗?
  • 之前的代码有什么问题?
  • 为什么这样做是错误的?
  • 是因为 Date 是可变类型吗?

最佳答案

我建议在构造函数中执行您的 (Date) dataNascimento.clone() 调用(直接或通过您的 setter)。

是的,FindBugs 会警告您,因为数据是可变的。您可能在 setter 和 getter 中进行了克隆调用,但您仍然会收到警告,因为您仍然可以更改构造函数中的日期。

关于java - 如何解决 EI_EXPOSE_REP2 及其错误原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10551242/

相关文章:

java - assertNotEquals 静态导入导致编译错误

maven-2 - Findbugs Maven 插件 - findbugs-exclude 与多个项目

java - @PrimaryKeyJoinColumn 未选择共享 key

Java:匹配新行开头的重复字符并替换为相同数量的替代字符

java - 为什么鼓励使用处理程序的私有(private)变量?

java - 不同的 SimpleDateFormat 解析

java - 上周是 java.time.LocalDate 吗?

php - 如果日期等于用户的生日,如何向用户回显?

gradle - 如何在Gradle 2.2.1中将Findbugs 3.0.1与Java 1.8结合使用:java.lang.ArrayIndexOutOfBoundsException:

java - NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE