java - 返回日期或日历字段

标签 java date gwt

Netbeans 提示此代码出现在 IDEA Code Inspections List 上.

 public Date getStartDate()
 {
    return theStartDate;
 }

IDEA 网站说:

This inspection reports any attempt to return a java.lang.Date or java.lang.Calendar field from a method. Since Date or Calendar are often treated as immutable values but are actually mutable, this construct may result in an object having its state modified unexpectedly. While occasionally useful for performance reasons, this construct is inherently bug-prone.

我还能如何返回 Date

最佳答案

您很可能应该返回相关值的副本,而不是当前对象,以避免意外修改

最简单的可能是
返回新日期(theStartDate.getTime());

这是因为 java.util.Date 是一个可变对象,您希望避免调用者错误地或恶意地执行以下操作引起的问题:

yourObject.getStartDate().setTime(0);

如果您进行上述更改,则上述语句将变得无害。

为什么是复制构造函数而不是克隆方法?看这里:java.util.Date clone or copy to not expose internal reference

请注意,每次调用该方法时都会创建一个新对象,这会降低性能,因此请谨慎使用。

关于java - 返回日期或日历字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15077577/

相关文章:

java - 分隔 arraylist 中的每个项目

java - 掷骰子,有 50% 的几率掷出 6

java - JTable里面的JScrollPane单元格大小和表格大小

javascript - Angular js - isDate() 将不起作用

java - GWT 2.6.1 拒绝在 Eclipse Luna 中启动开发模式

java - 如何在java中链接ghost脚本来减小PDF大小?

javascript - 修改日期时出现问题(修改错误)

PHP 设置时区而不更改日期?

gwt - 目标 org.codehaus.mojo :gwt-maven-plugin:2. 5.0:run 的参数 'runTarget' 丢失或无效

gwt - 如何让 FlowPanel 像 VerticalPanel 一样垂直流动它的 child ?